Thread - sleep()

Fala galera, beleza??? To com uma dúvida aqui quanto à utilização do método sleep() da classe Thread… Abaixo, segue o código que criei.

public class programaMain {
	public static void main(String[] args) throws InterruptedException {
		Programa p1 = new Programa();
		p1.setId(1);
		Programa p2 = new Programa();
		p2.setId(2);
		
		Thread t1 = new Thread(p1);
		Thread t2 = new Thread(p2);

		t1.start();
		t1.sleep(10 * 1000);
		t2.start();

	}
}

Agora, a dúvida: Pelo que pesquisei, o método t1.sleep(10 * 1000) deveria pausar a execução APENAS da Thread t1, e continuar executando a Thread t2, correto??? O que está acontecendo não é isso, o sistema executa a Thread t1.start() até o final, daí então ele faz a pausa e, após 10 segundos, executa a Thread t2… Alguém pode me ajudar???

Valeu!!!

Não amigo.
sleep não faz isso que você está imaginando…
Dá uma olhada com atenção na documentação do java:
http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Thread.html#sleep(long)
Você vai perceber que:

  1. o método sleep é estático (por tanto ele não se aplica a um objeto thread).
  2. o método faz com que a thread em execução “durma”.
    Se você quer que a thread1 durma , vc precisa colocar o código do sleep dentro de sua classe programa.

[]´s
Rodrigo

O sleep é estático. Ele para a thread atual.

Dentro do código de um dos seus runnables, ponha o código Thread.sleep(10 * 1000); para você testar.

Eh, mas eu achei que dava para dar o sleep() apenas em 1 das instâncias de Thread mesmo que utilizem o mesmo Runnable… Agora deu pra entender legal, valeu muito obrigado!