[quote=“Felipe”][quote=“HumbertoJr”][quote=“Felipe”]No ex você esta criando um novo objeto de Thread, isso vai criar uma Thread que não vai fazer absolutamente nada, tenta isso:
public class Classe1 extends Jframe implements Runnable
{
Thread ex;
public Classe1()
{
MApa mapa=new Mapa(valores);
start();
}
public void run()
{
ex = Thread.currentThread();
mapa.update();
//comando()
map.update()
}
}
OBS: Você não precisa por “Thread ex = …”, pois assim vai estar criando uma variavel local e não vai estar usando a global, use apenas “ex = …”.
OBS2: Você não deve chamar classe1.ex.start(); pois a Thread ex já esta sendo iniciada no construtor.
Espero ter ajudado.[/quote]
Alias fuyio testar agora e escrevi errado aqui no post,no meu codigo eu realmente não estou criando um novo objto não ,estou só dando um new Thread(this)
nele ,mas não o redeclaro.
E mais ,teu comando start();
sem referencia de um objeto Thread nem compila…[/quote]
É verdade, eu tinha escrito rapido e nem tinha me ligado nisso, mas o que estava acontecendo era que você estava criando uma variavel local com o mesmo nome da global, e dai a global permanesse inalterada impossibilitando que seja chamado o metodo join() da Thread
E no meu ex, ao invez de “start();”, seria “new Thread(this).start()”, ai sim, a Thread já seria iniciada no construtor (sem precisar ser iniciada na outra classe).
Se prefirir, ao invez de chamar “ex = Thread.currentThread()” no metodo run, armazene a Thread na variavel ex como você já estava fazendo (só que dessa vez na variavel global
).
Testa ai e posta o resultado.[/quote]
O que acontece é que o Mapa aparece com escala cinza todo ,a thread fica executando,e ele só desenha o mapa quando a thread termina…eu queria que ficasse desenhando enquanto a thread executa…
Diz ai como fica o join() no programa principal:
objdaClasse1.ex.join()?