Entendimento de Threads

2 respostas
P

olá pessoal,

fiz um pequeno exemplo da utilização de Threads, mas o resultado gerado não está de acordo com minhas expectativas. Alguém me ajudaria a entender o que está acontecendo???

o programinha é simples, apenas passa uma implementação da interface Runnable para três threads. dentro do método run, a thread dorme por um período definido de tempo (3 segundos).

public class ExibaMe implements Runnable{

public void run() {

try {

for (int i=0; i < 10; i++){

System.out.println(Thread.currentThread().getName());

Thread.sleep(3000);
}
    } catch (InterruptedException i){
        i.printStackTrace();
    }   
}

}

public class TestaTresThreads {

public static void main (String [] args){

ExibaMe e = new ExibaMe();

Thread t1 = new Thread(e);

Thread t2 = new Thread(e);

Thread t3 = new Thread(e);

t1.setName(Thread 1);

t2.setName(Thread 2);

t3.setName(Thread 3);

t1.start();

t2.start();

t3.start();
}

}

O Problema é que a saída sempre é gerada da mesma forma, mesmo rodando o programa diversas vezes. Eis a saída que sempre é gerada:

Thread 1
Thread 2
Thread 3
Thread 1
Thread 2
Thread 3
Thread 1
Thread 2
Thread 3
Thread 1
Thread 2
Thread 3
Thread 1
Thread 2
Thread 3
Thread 1
Thread 2
Thread 3
Thread 1
Thread 2
Thread 3
Thread 1
Thread 2
Thread 3
Thread 1
Thread 2
Thread 3
Thread 1
Thread 2
Thread 3

Posso estar enganado, mas pelo que tinha entendido do conceito de Threads, esta saída possivelmente seria diferente a cada execução do programa.

Estou usando o ubuntu 6.06

obrigado pela ajuda.

Rodrigo

2 Respostas

F

é por causa do sleep

os starts sao sincronizados na primeira execução e como voce dorme o mesmo tempo, eles se mantem sincronizados

tira o sleep e ve o resultado…

P

Olá Felipe,

obrigado, era isso mesmo. Vou estudar melhor os métodos sleep, wait, notify e notifyAll

vlw mesmo

Criado 3 de outubro de 2006
Ultima resposta 3 de out. de 2006
Respostas 2
Participantes 2