黑马程序员技术交流社区
标题:
run()start()方法执行的区别比较问题
[打印本页]
作者:
刘文飞
时间:
2012-10-3 20:15
标题:
run()start()方法执行的区别比较问题
代码:
——————————————————————————————————————————————————————————
class Thread01 extends Thread{
private String name;
public Thread01(String name){
this.name = name;
}
public void run(){
for(int i=0;i<10;i++){
System.out.println("线程" + this.name + " 是:" + i);
}
}
}
public class ThreadDemo01{
public static void main(String args[]){
Thread01 th1 = new Thread01("T1");
Thread01 th2 = new Thread01("T2");
Thread01 th3 = new Thread01("T3");
// th1.run();
// th2.run();
// th3.run();//run()方法无法实现多线程执行,需要start()方法
th1.start();
th2.start();
th3.start();
}
}
——————————————————————————————————————————————————————
执行后发现效果和run方法是一样的,没有并发执行。执行效果如下:
I:\code\java>java ThreadDemo01
线程T1 是:0
线程T1 是:1
线程T1 是:2
线程T1 是:3
线程T1 是:4
线程T1 是:5
线程T1 是:6
线程T1 是:7
线程T1 是:8
线程T1 是:9
线程T2 是:0
线程T2 是:1
线程T2 是:2
线程T2 是:3
线程T2 是:4
线程T2 是:5
线程T2 是:6
线程T2 是:7
线程T2 是:8
线程T2 是:9
线程T3 是:0
线程T3 是:1
线程T3 是:2
线程T3 是:3
线程T3 是:4
线程T3 是:5
线程T3 是:6
线程T3 是:7
线程T3 是:8
线程T3 是:9
——————————————————————————————————
是根据视频教程学习的,教程上的效果实现了多线程执行,而不是上面这种顺序执行。
作者:
gudao20080
时间:
2013-7-24 09:10
本帖最后由 gudao20080 于 2013-7-24 09:16 编辑
你定义th1,th2,th3三个线程的时候,应该只定义:Thread01 th1 = new Thread01("T1"); 然后用三个th1.start() ;就可以多线程了。多线程的思想就是多个线程操作同一对象,你定义了三个对象。
作者:
gudao20080
时间:
2013-7-24 09:12
写错了,是定义Thread01 th1 = new Thread01("T1");
不是Thread01 th1 = new Thread01(new Thread01("T1"));
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2