[Ajuda] Thread  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
brenojava123
HelloWorld
[Avatar]

Membro desde: 14/01/2011 13:10:30
Mensagens: 14
Localização: São Paulo
Offline

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:


----------------------------------------------
Breno
Estudante de Ciência da Computação
ViniMunhoz
Thread.start()
[Avatar]

Membro desde: 24/08/2008 17:21:09
Mensagens: 29
Offline

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

Veni, vidi, vici
[MSN]
jose.jesus
Entusiasta Java
[Avatar]

Membro desde: 19/10/2010 11:06:09
Mensagens: 20
Offline

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

Abraços

Bacharel em Ciência da Computação, Graduado pela Universidade Estadual do Sudoeste da Bahia.
OCPJP - Oracle Certified Professional, Java Programmer.
OCPWCD - Oracle Certified Professional, Java EE 5 Web Component Developer
ViniMunhoz
Thread.start()
[Avatar]

Membro desde: 24/08/2008 17:21:09
Mensagens: 29
Offline

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

Veni, vidi, vici
[MSN]
Adriano Almeida
JavaEvangelist
[Avatar]

Membro desde: 13/09/2006 15:29:34
Mensagens: 386
Offline

Oi Breno,

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



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

Twitter: @adrianoalmeida7
http://ahalmeida.com
http://blog.caelum.com.br

 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team