Duvida com Thread ...run() x start()

2 respostas
P

Olá pessoal,

não entendi porque com start() sai o nome setName e com run()…

Minha duvida…

se alguém puder me ajudar …

abs

public static void main(String [] args) {
        // Make one Runnable
        NameRunnable1 nr = new NameRunnable1();
        Thread one = new Thread(nr);
        Thread two = new Thread(nr);
        Thread three = new Thread(nr);

        one.setName("Fred");
        two.setName("Lucy");
        three.setName("Ricky");
        one.start();
        two.start();
        three.start();

ou
        one.run();
        two.run();
        three.run();


        
    }

saida (start):
Run by Fred, x is 1
Run by Fred, x is 2
Run by Fred, x is 3
Run by Lucy, x is 1
Run by Lucy, x is 2
Run by Lucy, x is 3
Run by Ricky, x is 1
Run by Ricky, x is 2
Run by Ricky, x is 3

saida (run):
Run by main, x is 1
Run by main, x is 2
Run by main, x is 3
Run by main, x is 1
Run by main, x is 2
Run by main, x is 3
Run by main, x is 1
Run by main, x is 2
Run by main, x is 3

2 Respostas

davidbuzatto

Quando invocado o método run() na verdade você não está colocando a thread para ser executada e sim apenas invocando o método run. Para iniciar de fato a thread vc precisa invocar o método start.

Coloca a implementação completa ai. Você usa o getCurrentThread e manda exibir o nome correto??? Aparece main quando chamado run pois a thread atual é a thread main.

sergiolopes

o metodo run eh um metodo normal, como qualquer outro. tanto que voce mesmo que implementa o run no seu codigo, do que vc quer e tal.

se eu perguntasse pra vc qual eh a saida do codigo:

System.out.println("A");
System.out.println("B");
System.out.println("C");

com certeza vc iria falar A B C.
isso porque vc esta chamando 3 metodos um depois o outro e isso imprime em sequencia e pronto. se escrever isso dentro do main, que executa eh o metodo main, a thread do metodo main.

é a mesma coisa com as chamadas do run. qdo vc chama o run diretamente no main, ta chamando um depois do outro em sequencia e todos a partir do main.


ja o metodo start eh um metodo magico, q nao eh a gente que escreve. eh um metodo do proprio java responsavel por criar novas threads. e ele chama o run pra vc na thread nova que ele criou.

assim, usando o start, vc tem cada execucao na sua propria thread.

Criado 10 de junho de 2008
Ultima resposta 10 de jun. de 2008
Respostas 2
Participantes 3