Como fazer várias Threads

4 respostas
H

Eu tenho este trecho que cria uma thread

Runnable threadJob = new MyRunnable(); Thread filhoThread = new Thread(threadJob); filhoThread.start();

Porém eu quero fazer X threads, sem precisar digitar o código para cada uma, até porque é o usuários quem vai especificar o número de X. Seria algo como:

for (int m = 0; m < args.length -1; m++) { System.out.println("Filho vale: "+FilhoRaizDominio[m]); PortaRaiz = PortaRaiz + 1; Runnable threadJob2 = new MyRunnable(); Thread filhoThread = new Thread(threadJob2); filhoThread.start(); }

O estranho de tudo é que ele está dizendo que:
FILHO vale “bla bla bla”
FILHO vale “bla bla bla”
Na Thread, porta vale 2004
Na Thread, porta vale 2004

Aí vem o erro: “Porta já em uso”;

Ou seja, ele primeiro le os dois system e por fim entra na thread.
Muito estranho, alguém sabe o que pode estar ocorrendo?

Abraços.

4 Respostas

V

Você não pode garantir a ordem que as threads rodam. E é muito provável que o for vá terminar antes mesmo das threads criadas por ele começarem a rodar…

Mas o jeito que você fez para criar várias threads me parece certo. Isso é, desde que o args esteja preenchido corretamente.

H

Eu não posso garantir a ordem que elas rodam, mas posso garantir a hora que elas começam a rodar?
É estranho porque eu passo a porta incrementada mas ele diz que ambas são iguais, não tenho solução para o problema =/

Abraços.

V

Onde você passa a porta?

A thread será criada no momento do start. Mas você não sabe quando começará a rodar.
De qualquer forma, a porta deveria ser alocada na criação do runnable threadjob.

Tem como anexar o código do seu runnable aqui? Se for muito grande, use os attachments.

H

Valeu Vini,
consegui resolver o problema, e era justamente onde eu estava passando a porta.

Abraço.

Criado 20 de novembro de 2007
Ultima resposta 23 de nov. de 2007
Respostas 4
Participantes 2