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();注释掉,直接t1.run(); 也一样可以运行,线程不需要start(可运行状态) ,直接进入运行状态也是可以的??
t1.start();
t2.start();和: t1.run();
t2.start(); 就知道二者的不同了。后者是阻塞式调用。t1不完成,t2就永远不会启动。
前者就不同了,两个是不同的线程。
而如果该线程是通过实现Runnable接口来构造的,他就可以直接调用Runnable的run方法,而不需要start方法区
调用run方法,建议看看jdk帮助
t1.start();
t1.run();那就是main 和 T1 两个线程 随机调用run()方法。