Dúvida sobre execução de Thread

4 respostas
cu_ringa
public class Brand2Hand implements Runnable{
   boolean bStop;
   public static void main(String argv[]){
	Brand2Hand b2h = new Brand2Hand();
	b2h.run();
	System.out.println("############################################# " + b2h.bStop);
	Brand2Hand b2h2 = new Brand2Hand();
	b2h2.bStop=true;
	b2h.bStop=true;
	System.out.println("############################################# " + b2h.bStop);
    }
    public void run(){
	for(int i = 0; i &lt 100000; i ++){
	    System.out.println(i);
	    if (bStop ==true){
		break;
	    }
	    System.out.println(this.bStop);
	}
       
    }
}

fiz esse codigo e os System.out só aparecem depoius do metodo run rodar. Será q é minha JVM? Já q abri outro thread de execução instanciando outra Thread, num era p imprimir os System.out antes de terminar o metodo run ?

4 Respostas

rodolfogs8

Tem dois System.out qual deles esta falando?

Guilherme_Gomes

Tenta isso:

public class Aa extends Thread{
	boolean bStop;
	public static void main(String argv[]){
		Aa b2h = new Aa();
	 	b2h.start();
	 	System.out.println("############################################# " + b2h.bStop);
	 	Aa b2h2 = new Aa();
	 	b2h2.bStop=true;
	 	b2h.bStop=true;
	 	System.out.println("############################################# " + b2h.bStop);
	}
	
	public void run(){
		for(int i = 0; i &lt 100000; i ++){
	 	    System.out.println(i);
	 	    if (bStop ==true){
	 		break;
	 	    }
	 	    System.out.println(this.bStop);
	 	}
	}
}
LPJava

so uma perguntinha… eu nao vi no seu codigo outra thread em execucao alem do main… observe que vc chamou run(), e isso nao faz o programa ser executado em outra camada… e sim na atual… para fazer a thread rodar… em outra camada… use o start()… :smiley:

grato: Guilherme Gomes

jbytecode

Primeiro você instância a Runnable:

Brand2Hand b2h = new Brand2Hand();

Depois você passa para uma Thread:

Thread t = new Thread(b2h);

Para startar a Thread é preciso chamar o método start():

t.start();

Se você apenas chamar o método run() não significa que você está startando a thread.

Criado 3 de agosto de 2007
Ultima resposta 14 de ago. de 2007
Respostas 4
Participantes 5