Vc pode usar o método Thread.sleep(‘milesegundos’);
Mas se é um Thread as duas vão ser executadas paralelas, mesmo que vc não dê um sleep na primeira.
Vc pode usar o método Thread.sleep(‘milesegundos’);
Mas se é um Thread as duas vão ser executadas paralelas, mesmo que vc não dê um sleep na primeira.
Você quer que as duas threads fiquem dormindo 1 segundo alternadamente?
Se você fizer esse método synchronized, duas threads não podem entrar ao mesmo tempo, então, enquanto a primeira thread estiver dentro do método, a segunda fica bloqueada esperando a outra sair.
Eu não lembro se isso é totalmente confiável (provavelmente não
), a ponto da mesma thread conseguir sair e entrar nesse método antes da segunda. Nesse caso, você vai ter que usar Variáveis de Condição (procure no Google e você acha explicações, exemplos e até código pronto).
Bom, vamos lá.
Você n ão criou nenhuma Thread em seu código. Apenas implementou Runnable, o que está corretíssimo. Por outro lado, se você deseja iniciar duas threads - no verdadeiro conceito - você deve passar seu objeto Runnable no construtor de sua Thread.
Assim:
Thread t = new Thread(new MinhaThread("String"));
Thread t2 = new Thread(new MinhaThread());
Feito isso, para que suas Threads iniciem em “processos” distintos você deve utilizar o método start(), e não o método run().
Veja:
t.start();
t2.start();
Agora sim você tem duas threads em execução.
Sacou? :thumbup:
[]'s
Roberto Marin
Pessoal,
estou precisando usar threads em um codigo e estou tendo algumas(varias) dificuldades, por exemplo:
public class MinhaThread implements Runnable {
private static String msg;
public MinhaThread(){
}
public MinhaThread(String msg2) {
msg = msg2;
}
public void run() {
while(true){
System.out.println(msg);
try {
Thread.sleep(1000);
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MinhaThread t = new MinhaThread("String");
MinhaThread t2 = new MinhaThread();
t.run();
t2.run();
}
}
como faco para alterar entre as Threads t e t2 nesse exemplo a t entra em loop, devido ao while(true), mas a minha ideia seria que ela “dormisse” por 1 seg para que a t2 entrasse en execucao e assim por diante.
obrigado!
Obrigado a todos pelas respostas e o que solucionou o meu problema foi a dica do rmarin.
Valeu!!!