Duvida static e non-static metodo Threads

4 respostas
LPJava

qual a diferença entre o metodo static e nao static da class Thread, por exemplo o sleep() e join(), claro o objetivo dos dois eh diferente…mas um eh static e outro nao… nao conseguir compreender a diferença nessa parte… e assim a implemetacao do join() ta certa?

class Joi implements Runnable{
	public void run(){
		System.out.println(Thread.currentThread().getName());
	}
	public static void main(String args[]){
		Joi j = new Joi();
		Thread t = new Thread(j);
		Thread t1 = new Thread(j);
			t.setName("Camilo");
			t1.setName("java");
		t.start();
		
		try{
		t1.join();
		}catch(InterruptedException e){}
		
		t1.start();
	}
}

:?:

4 Respostas

ViniGodoy

Geralmente os métodos static agem sobre a Thread atual, enquanto os não static agem (ou exigem informações de) outra thread.

No caso do Thread.sleep() ou Thread.interrupted(), você está comandando a thread atual a dormir, ou está perguntando se a thread atual foi interrompida.

No caso do join(), você fará a thread atual esperar por outra. Como o método join() precisa saber quando a outra Thread morreu, nada mais natural que ele seja um método não-estático da outra Thread.

LPJava

entao join() eh nao estatico pq nao se aplica a thread atual e sim a thread que eu fizer uma referencia?

Thread t = new Thread();
thread t1 = new Thread();
t1.join();
t.start();
t1.start();
ViniGodoy

Ele bloqueia a Thread atual, mas até que a Thread com o join() termine.

LPJava

msa pq ele eh nao static isso que nao entendi… pq ja tava acostumado de ter yield() sleep() static… pois minha duvida eh no modificador!!

Criado 20 de fevereiro de 2007
Ultima resposta 20 de fev. de 2007
Respostas 4
Participantes 2