Threads

Salve, Salve Galera!

Alguém pode me explicar o porque isso imprime somente START?


class Teste extends Thread {
	
	public void run() {
		System.out.println("RUN");
	}
	
	public void start() {
		System.out.println("START");
	}
	
}

no main eu dei um

new Teste().start();

Deixei o pc um ligado durante um bom tempo pensei que a thread tinha ido dormir ou o escalonador deixou ela de lado…ou sei lá… mas num funfou…

Ser que eu reescrevi o metodo start, mas e ai… num devia funfar normalmente?

Explicações?

Atn.
Dennys Fredericci
http://www.dennys.eti.br

Olá,

Ao invez de “new Teste().start();” utilize “new Thread().start();” que dai será invocada o método run() de Thread.

Eu acho que é isso mesmo. Você sobrescreveu o método, ele não chama mais o run().

Eu acho que é isso mesmo. Você sobrescreveu o método, ele não chama mais o run().[/quote]

Então… eu imagino que pelo motivo de ter reescrito o metodo start a Thread não vai para o estado de pronta para que o escalonador selecione…

Estranho… :roll:

Atn.
Dennys Fredericci

Olá,

Como você sobrescreveu o método, rpecisa chamar o métyodo da classe pai. Faça assim:

class Teste extends Thread {
    
    public void run() {
       System.out.println("RUN");
    }
    
    public void start() {
        super.start();
       System.out.println("START");
    }

    public static void main(String args[]){
        new Teste().start();
    }
 }

Nope, fazendo isso você vai iniciar uma nova Thread, não um Teste :wink:

[quote=“pcalcado”]Olá,

Como você sobrescreveu o método, rpecisa chamar o métyodo da classe pai. Faça assim:

class Teste extends Thread {
    
    public void run() {
       System.out.println("RUN");
    }
    
    public void start() {
        super.start();
       System.out.println("START");
    }

    public static void main(String args[]){
        new Teste().start();
    }
 }

Nope, fazendo isso você vai iniciar uma nova Thread, não um Teste ;)[/quote]

hum… véro… que vacilo…

:oops:

Valeu!

Atn.
Dennys Fredericci
http://www.dennys.eti.br