Thread duvida no uso..run() X start()

Olá pessoal,

uma duvida ao estudar Theads …

qual a diferença em utilizar run() e start() …no exemplo abaixo não vi diferença …

Tem alguma???

abs


public class Ac extends Thread {
    private int codigo;
	public void run(){
		System.out.println("Thread..."+Thread.currentThread().getName());
		System.out.println("Thread..."+Thread.currentThread().getId());
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		
		
		new Ac().start();
		new Ac().run();
	}

}

Quando você chama run(), você está simplesmente chamando um método de uma classe, e esse método será executado serialmente (não será criada uma thread). E quando você chama start(), a jvm cria uma nova thread e depois irá chamar o run(), que será executado paralelamente com as outras threads.

Não notou diferença porque o start() chama o método run() pois é uma thread. Segundo especificações da SUN

Complementando…

Ao se chamar somente new Ac().run(); vc não esta startando a thread, vc simplesmente chama um método da classe Ac e não uma thread.

adicionando que ao tratar de threads voce possui duas opcoes :
-fazer uma subclasse da classe thread
-implementar a interface Runnable
Cada maneira tem suas vantagens e desvantagens cabendo a voce decidir .
agora complementando oque foi dito , sobre a diferenca entre start() e run() :

fonte : corejava 7ed.

da uma olhada tbm em : http://java.sun.com/docs/books/tutorial/essential/concurrency/threads.html

abracos

obrigado pelo retorno…