Dúvida : Identificando threads em execução de objetos do mesmo tipo

2 respostas
lisasf

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?

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){}
    }
}
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

2 Respostas

danieldomingues86

Olá

Na linha onde está : int id = Console.leInt(“Identifique o objeto:”);
tire somente o int ficando assim :

id = Console.leInt(“Identifique o objeto:”);

Vê se funciona :slight_smile:

Abraços
Daniel.

lisasf

Nem acredito que seja somente isso :smiley:
Executei e dessa vez deu certo.
Muito Obrigada Daniel.
Abraço.

Criado 1 de junho de 2011
Ultima resposta 1 de jun. de 2011
Respostas 2
Participantes 2