public class Demo11 {
public static void main(String[] args) {
HaHaThread ha = new HaHaThread();
ha.run();
ha.start();
System.out.println("111");
}
}
class HaHaThread extends Thread{
public void run(){
System.out.println("222");
}
}
为什么结果是222,111,222
不是222,222,111呢?
作者: RuntimeError! 时间: 2013-11-26 20:59
run是不用线程,直接执行复写的run,输出222,这是没问题的
而下面用start,start是启用之前申请号的一个线程,在这个线程已经启动的时候还没来得及输出222,下面的111就执行了,所以先见到111然后222,
如果想让线程执行完毕再执行后面的111可以在ha.start后面加上ha.join();
要抛异常 作者: 还不到时候 时间: 2013-11-26 21:17
//写成下面的这样会是你想要的结果。建议使用循环来验证多线程的代码,才看到相互交替的执行结果,比较明显。
public class Demo11 {
public static void main(String[] args) {
HaHaThread ha = new HaHaThread();//这是创建一个线程
ha.run(); //这代码还是由主线程来执行的
System.out.println("111");
//启动刚刚创建的线程,这时主线程的执行代码已经结束了,只有创建的那个线程在运行
ha.start();
}
}
class HaHaThread extends Thread{
public void run(){
System.out.println("222");
}
} 作者: 王贺 时间: 2013-11-26 22:19
public static void main(String[] args) {
HaHaThread ha = new HaHaThread();
ha.run();
ha.start();
System.out.println("111");
}
}
class HaHaThread extends Thread{
public void run(){
System.out.println("222");
}