Thread [RESOLVIDO]

2 respostas
Y

Até hoje não havia precisado fazer nada com real multi threading… aí agora que apareceu, estou em dúvida…

Fazendo uma aplicação gráfica tive a necessidade de fazer um processo multhreading, e acabei resultando no seguinte código:

ExecutorService es = Executors.newFixedThreadPool(1);
      es.execute(backup);
      es.shutdown();

Só que eu acho que deve haver alguma forma mais simples e mais “correta” de se fazer isso. Como vocês podem perceber, é bem simples: meu objeto Backup backup implementa Runnable e, portanto, possui um método void run(). Preciso apenas que esse método seja executado em outra Thread. Como eu poderia fazer isso? O código acima funciona. mas acredito que não seja a sua forma mais correta.

2 Respostas

Y

Com auxílio de Sami Koivu, cheguei ao seguinte código:

new Thread(backup).start();

KISS - Keep It Simple Stupid

ViniGodoy

Exatamente. Use o ExecutorsService se você tiver uma série de Runnables curtos e, portanto, terá que criar diversas threads que duram pouco tempo.

Nesse caso, o ExecutorsServices permite criar um Pool de threads, que rodarão seus Runnables e voltarão ao estado de IDLE, esperando uma nova tarefa. Assim você poupa um tempo precioso de criação/destrução das diversas linhas de execução e melhora o uso dos recursos da máquina. :wink:

Se sua intenção era só criar uma nova linha de execução para uma tarefa longa e relativamente esporádica, usar a classe Thread diretamente é uma ótima alternativa.

Criado 7 de abril de 2007
Ultima resposta 7 de abr. de 2007
Respostas 2
Participantes 2