public class Q02 implements Runnable { /**
* @param args
*/
public void run()
{
while(true)
{
System.out.println("abc");
}
}
public static void main(String[] args)
{
// TODO Auto-generated method stub
Q02 q1 = new Q02();
Thread t1 = new Thread(q1,"001");
Thread t2 = new Thread(q1,"002");
System.out.println(t1.getName());
System.out.println(t2.getName());
try
{
t1.sleep(10000);
}
catch(Exception e){}
// t1.start();
t1.run();
}}
t1.start();
t2.start();和: t1.run();
t2.start(); 就知道二者的不同了。后者是阻塞式调用。t1不完成,t2就永远不会启动。
前者就不同了,两个是不同的线程。
而如果该线程是通过实现Runnable接口来构造的,他就可以直接调用Runnable的run方法,而不需要start方法区
调用run方法,建议看看jdk帮助
public void run() {
if (target != null) {
target.run();
}
}