黑马程序员技术交流社区

标题: 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