黑马程序员技术交流社区

标题: 多线程中的两种方式做比较发现一个问题。 [打印本页]

作者: 常万    时间: 2012-4-7 21:28
标题: 多线程中的两种方式做比较发现一个问题。
class ThreadDemo2 extends Thread//implements Runnable
{
        private int thick =200;
        public void run()
        {
               
                while(true)
                {
                        if(thick>0)
                                System.out.println(Thread.currentThread().getName()+"===="+thick--);
                        //thick--;
                }
               
        }
}
        /**
         * @param args         */
class ThreadDemo1
{

        public static void main(String[] args)
        {
                ThreadDemo2 t = new ThreadDemo2();
                Thread t1 = new Thread(t);
                Thread t2 = new Thread(t);
                Thread t3 = new Thread(t);
                Thread t4 = new Thread(t);
                t1.start();
                t2.start();
                t3.start();
                t4.start();


        }
       

}
以上代码,用继承Thread也实现了多线程功能,打印出线程数是从1到4。我换成实现接口后,发现线程数是从0到3
这意味着什么???两种方式的线程数分别是多少?主线程什么的都算上。高手勿喷
作者: 郑涛    时间: 2012-4-7 21:58
两种创建多线程方法的区别:
1.继承Thread来创建线程类的方法,在继承了Thread后,不能再继承其他类,这样灵活性就不如实现Runnable接口来创建线程类的方法了。2.正如上面所说的使用实现Runnable接口来创建线程类的方法可以达到资源共享。(在这里说明一下:继承Thread类来创建线程类的方法也可以实现资源共享,只不过比较麻烦。因此,在创建线程类的时候,应优先选择实现Runnable接口来创建线程类的方法。)
线程数由你创建的线程对象实例个数决定,与以上两种方式没有直接关系。
作者: 宋蕈    时间: 2012-4-7 22:11
这个问题可能出在了: Thread.currentThread().getName() 上, 当你继承类Thread时,
和继承接口Runnable时,  在未指定线程名称的情况下,系统的取名不同而已
作者: 刘_浩    时间: 2012-4-8 10:13
哥们,只能说明你中六盒彩了,当会出现四个运行线程。我都试过了。这两个方式对线来说没有什么?区别在于,JAVA中子类只能有一个父亲,万一子类继承了Thread那么它就不能去继承别的了,所以实现implements会比较的好。
作者: 常万    时间: 2012-4-8 21:18
liuhao411 发表于 2012-4-8 10:13
哥们,只能说明你中六盒彩了,当会出现四个运行线程。我都试过了。这两个方式对线来说没有什么?区别在于, ...

我觉得是不是不我本本还是单核的问题?我运行了好多遍都是这个结果.....难道难道我要出事了...:lol
作者: 刘_浩    时间: 2012-4-8 23:27
常万 发表于 2012-4-8 21:18
我觉得是不是不我本本还是单核的问题?我运行了好多遍都是这个结果.....难道难道我要出事了... ...

应该不会的,这是有随机性的,但是电脑不同,结果也会不同的,这个不重要,只要自己就能够理解就行。
作者: 常万    时间: 2012-4-9 00:13
朋友们,该睡觉了...{:soso_e125:}
作者: pray    时间: 2014-4-26 04:39
我顶啊。接着顶




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2