Re:threads

4 respostas
G

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.

4 Respostas

C

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 :slight_smile: ), 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).

rmarin

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

M

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!

M

Obrigado a todos pelas respostas e o que solucionou o meu problema foi a dica do rmarin.

Valeu!!!

Criado 31 de agosto de 2006
Ultima resposta 31 de ago. de 2006
Respostas 4
Participantes 4