A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

两种创建多线程方法的区别:
1.继承Thread来创建线程类的方法,在继承了Thread后,不能再继承其他类,这样灵活性就不如实现Runnable接口来创建线程类的方法了。2.正如上面所说的使用实现Runnable接口来创建线程类的方法可以达到资源共享。(在这里说明一下:继承Thread类来创建线程类的方法也可以实现资源共享,只不过比较麻烦。因此,在创建线程类的时候,应优先选择实现Runnable接口来创建线程类的方法。)
线程数由你创建的线程对象实例个数决定,与以上两种方式没有直接关系。
回复 使用道具 举报
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
这意味着什么???两种方式的线程数分别是多少?主线程什么的都算上。高手勿喷

7 个回复

倒序浏览
这个问题可能出在了: Thread.currentThread().getName() 上, 当你继承类Thread时,
和继承接口Runnable时,  在未指定线程名称的情况下,系统的取名不同而已
回复 使用道具 举报
哥们,只能说明你中六盒彩了,当会出现四个运行线程。我都试过了。这两个方式对线来说没有什么?区别在于,JAVA中子类只能有一个父亲,万一子类继承了Thread那么它就不能去继承别的了,所以实现implements会比较的好。
回复 使用道具 举报
liuhao411 发表于 2012-4-8 10:13
哥们,只能说明你中六盒彩了,当会出现四个运行线程。我都试过了。这两个方式对线来说没有什么?区别在于, ...

我觉得是不是不我本本还是单核的问题?我运行了好多遍都是这个结果.....难道难道我要出事了...:lol
回复 使用道具 举报
常万 发表于 2012-4-8 21:18
我觉得是不是不我本本还是单核的问题?我运行了好多遍都是这个结果.....难道难道我要出事了... ...

应该不会的,这是有随机性的,但是电脑不同,结果也会不同的,这个不重要,只要自己就能够理解就行。
回复 使用道具 举报
朋友们,该睡觉了...{:soso_e125:}
回复 使用道具 举报
pray 高级黑马 2014-4-26 04:39:11
8#
我顶啊。接着顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马