[b]Tenho que identificar as threads que estão sendo executadas concorrentemente no código abaixo.
Optei por pedir para o usuário identificar o objeto dentro do construtor, uma vez que tenho dois objetos do mesmo tipo.
O problema é que a variável identificadora independente do tipo é sempre impressa nula.
Não consigo achar erro no código. Alguém pode me auxiliar?[/b]
[code]class NossaClasse2 extends Thread {
int id;
NossaClasse2(){
int id = Console.leInt("Identifique o objeto:");
}
public void run() {
try{
for (int i = 0; i < 10; i++){
sleep((int)(Math.random() * 1000));
System.out.println(i + ":" + "Thread1 do objeto " + id);
}
}
catch (InterruptedException e){}
}
}
public class TestNossaClasse2 {
public static void main(String args[]) {
NossaClasse2 nc2 = new NossaClasse2();
NossaClasse2 nc3 = new NossaClasse2();
nc2.start();// chama o método run da thread nc2
nc3.start();
run();//chama o método run() local
}
static void run() {
try {
for (int i = 0; i < 10; i++) {
Thread.sleep((int) (Math.random() * 1000));
System.out.println(i + ":" + "Thread2");
}
}
catch(InterruptedException e){}
}
}
[/code]
Exemplo de saída :
run:
Identifique o objeto:
1
Identifique o objeto:
2
0:Thread1 do objeto 0
0:Thread2
0:Thread1 do objeto 0
1:Thread1 do objeto 0
1:Thread1 do objeto 0
2:Thread1 do objeto 0
1:Thread2
3:Thread1 do objeto 0
2:Thread1 do objeto 0
4:Thread1 do objeto 0
3:Thread1 do objeto 0
2:Thread2
5:Thread1 do objeto 0
3:Thread2
4:Thread1 do objeto 0
4:Thread2
6:Thread1 do objeto 0
7:Thread1 do objeto 0
5:Thread2
5:Thread1 do objeto 0
8:Thread1 do objeto 0
6:Thread1 do objeto 0
6:Thread2
7:Thread1 do objeto 0
7:Thread2
9:Thread1 do objeto 0
8:Thread2
8:Thread1 do objeto 0
9:Thread1 do objeto 0
9:Thread2