Pessoal, estava estudando threads, e me deparei com o seguinte problema:
Suponham q eu tenha uma classe assim:
[code]public class Teste
{
private static Teste instance = new Teste();
public static Teste getInstance()
{
return instance;
}
public synchronized void metodo1()
{
System.out.println(Thread.currentThread().getName() + " iniciando metodo1()");
// Faça algo
System.out.println(Thread.currentThread().getName() + " encerrando metodo1()");
}
}[/code]
Agora, tenho a seguinte Thread:
[code]public class ThreadTeste extends Thread
{
public ThreadTeste(String nome)
{
super(nome);
}
public void run()
{
Teste t = Teste.getInstance();
t.metodo1();
}
}[/code]
E, finalmente, tenho a classe-teste:
[code]public class TesteMain
{
public static void main(String args[])
{
Thread t1 = new Thread("t1");
Thread t2 = new Thread("t2");
Thread t3 = new Thread("t3");
Thread t4 = new Thread("t4");
Thread t5 = new Thread("t5");
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}[/code]
Isso, creio eu, deveria retornar blocos assim:
t1 iniciando metodo1()
t1 encerrando metodo1()
Entretanto, no meio da execução, ele retorna, por exempo:
t1 iniciando metodo1()
t2 iniciando metodo1()
t1 encerrando metodo1()
Ora, se metodo1() ta sincronizado, pq o metodo tá sendo interrompido na metade?
Agradeço mto a paciência d analisar o problema, e abraços.
P.S. - plataforma linux