[Ajuda] Thread

4 respostas
brenojava123

Galera, tipo eu sei que eu não tenho como determinar qual a ordem a ser executada de uma Thread, mas eu tenho 2 threads e queria saber como eu posso dar prioridade pra uma thread(isso eu sei que da, eu sei que não é garantia que sera executada antes, mas como eu fasso para setar a prioridade), e outra eu tenho 2 Threads se eu colocar uma pra durmir a outra sera executada certo ?

tipo:

Thread t1 = new Thread(p1)
t1.start();

Thread t2 = new Thread(p2)
t2.start();

//certo aqui ele vai executar as 2 threads, nao sei em qual ordem, mas e se eu fizer assim

t1.sleep(3000);

//por 3 segundos a JVM iria executar somente a t2 certo ? e depois ela iria voltar a executar as 2 correto ?

4 Respostas

ViniMunhoz

O método é o setPriority()

Ele recebe um inteiro com a prioridade.
Tem 3 constantes na classe Thread MIN_PRIORITY, NORM_PRIORITY e MAX_PRIORITY…
O valor tem que estar entre o minimo e o maximo.

Colocar a Thread para dormir não garante necessariamente que a outra será executada mas existe essa possibilidade.

Abraço

jose.jesus

Outra alternativa que você pode usar é o método join e obrigar q uma thread finalize antes da outra.

Abraços

ViniMunhoz

Acredito que no caso dele um yield funcione melhor que o join para o que ele quer…

Adriano_Almeida

Oi Breno,

tem um erro grave no teu código. O método sleep é estático. A chamada ideal seria então:

Thread.sleep(3000);

Além disso, o método sleep executa sobre a Thread atual. No caso, como a chamada está no método main, a Thread que vc está interrompendo é a main (lembre-se, o sleep é estático… entao, tanto faz vc chamar ele em t1 ou t2, quem vai dormir ali vai ser o main). Se vc quer colocar t1 para dormir, é lá no método run daquele objeto p1 que vc tem que colocar uma chamada pra Thread.sleep.

Outra coisa, cuidado com a afirmação de que com Threads a ordem da execução nunca é possível de ser determinada. Existem casos em que é possível sim, mas o melhor mesmo é quando vc nao precisa de sleeps e sincronizacao (mas nem sempre eh possivel).

[]'s

Criado 17 de janeiro de 2011
Ultima resposta 18 de jan. de 2011
Respostas 4
Participantes 4