Membro desde: 27/10/2004 00:17:24
Mensagens: 90
Offline
Galera me surgiu uma duvida quando eu tava fazendo um simulado aqui...
Olha soh:
se eu tivero seguinte codigo:
O que vai acontecer eh que ele vai imprimir:
apos t1
apos t2
t1
t2
... os 2 ultimos aleatoriamente
Caso queiramos que ele imprima o apos t1 e apos t2 ao final de seus respectivos terminos deveriamos usar um join...
blz isso resolve o problema.
o detalhe eh que eu usar usar:
Tambem resolve o problema... ateh entao pensava que os dois metodos (start e run) se comportassem da msm maneira...
Eu tava lendo na api (se eu estiver errado por favor me corrijam) uma explicacao talvez seja q o metodo start na verdade apos sua chamada tera duas threads executando concorrentemente a thread que roda esta rodando o metodo start e que retornara o resultado, e outra que executará o metodo run().
Logo como no run isso nao acontece, havera apenas uma thread (ela nao precisara concorrer e/ou perder o processo para outra thread)
Se alguem souber melhor o que ocorre nesse caso, e eu falei besteira pode postar ai..
Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline
chamar o metodo run da classe Thread é mais do que errado. foi um erro de design. e a sun cobrar isso na certificacao eh o fim da picada. e isso de cirar Thread estendendo a classe é horroroso... coisas da epoca do 1.0 (assim como os bizarros java.util.Properties e Stack)
se voce quer criar uma thread eh porque voce QUER que os dois "programas" rodem concorrentemente... eh isso que voce pensou mesmo.
Membro desde: 17/08/2005 10:11:05
Mensagens: 1095
Offline
Acho que se você chamar o método run() ele não vai passar de um método comum, e vc não vai ter nenhum Thread de execução. Para colocar um Thread em estado executável vc deve chamar o método start().