黑马程序员技术交流社区

标题: 创建线程的两种方式有什么区别? [打印本页]

作者: 苏浩    时间: 2014-10-20 21:32
标题: 创建线程的两种方式有什么区别?
创建线程的方式:
   new Thread(); 和 new Thread(new Runnable()) 这两种方式有什么区别
作者: 微微微笑    时间: 2014-10-20 22:18
一种是继承Thread,一种是实现Runnable接口,第二种较好,避免了java单继承的局限性
作者: 马个了黑_邓    时间: 2014-10-20 22:57
继承Thread子类无法再从其它类继承
实现Runnable接口可以从其它类中继承一些有用的属性和方法
作者: 千里马    时间: 2014-10-20 23:21
方式1 Thread():
                1. 自定义一个类继承Thread.
                2, 重写Thread的run方法。 把自定义线程的任务定义在run方法中。
                3.创建Thread的子类对象,并调用start方法启动线程。线程就会执行run方法中的代码。

方式2 Runnable()实现类方法:
                1. 自定义一个类实现Runnable接口。
                2. 实现Runnable接口 的run方法,把自定义线程的任务定义在run方法上。
                3. 创建Runnable实现类的对象、
                4. 创建Thread类的对象,然后把Runnable实现类的对象作为参数传递进去.
                5. 调用Thread类对象的start方法开启线程执行任务。
作者: mudao    时间: 2014-10-20 23:28
我也感觉,原理差不多。不过继承变接口,光这一点Runnable就牛逼多了
作者: 陌上阳光    时间: 2014-10-20 23:34
继承Thread类时,线程的执行代码是放在Thread子类的run方法中的,而且由于JAVA不支持多继承,此子类就只能继承Thread类。
实现Runnable接口时,线程的执行代码是放在接口的子类的run方法中的,而且避免了单继承的局限性,可以继承其他父类的同时实现Runnable接口。
作者: liu951753xz    时间: 2014-10-20 23:36
一楼正解。
作者: uoyouwy    时间: 2014-10-21 06:33
看到上面的解释,又一次加深了我的印象,为了感谢楼主,总要表示一下,纯手打
作者: zhappy    时间: 2014-10-21 08:26
用实现接口的方法,可以间接实现Java的多继承。
作者: 淡淡的雨    时间: 2014-10-21 09:27
实现Runnable接口,是为了得到run方法。而继承了Thread类,虽然得到run方法,却多得到了其他不需要的方法。
想要啥方法,就取得啥方法
作者: 郑飞    时间: 2014-10-21 09:39
继承线程一般都是反问自身对象的数据
实现接口访问外部数据很方便
所以共享数据基本用后者
作者: 姠佐メ亾佑つ    时间: 2014-10-21 09:45
这个理解了线程的基本原理就行了吧, 开发根据的需求来吧,看你面对的程序结构,需求是什么, 大多数情况是用后者,大大提高了程序的扩展性,
作者: 雪人    时间: 2014-10-21 10:38
没啥区别...都是弄个子线程...看你喜欢用哪个了而已...
作者: 天蝎降降温    时间: 2014-10-21 10:44
说的都不够准确,第一种继承Thread类,没new一个便产生一个线程,不够好,因为线程过多,资源消耗也过多,而且容易出现安全问题。第二种实现runnable接口,只需把子类对象传递给线程对象,虽然可以实现多个接口。避免了单继承,但仍然不是最好的方式。第三种,定义一个线程池,此方法最好。因为线程的数量是固定的,一个对象请求服务结束,线程不会消失,成为空线程等待下一个请求服务。减少了操作系统中的并发线程的数量,从源头上减少了资源消耗与多线程安全问题发生的几率。
作者: liuxiang    时间: 2014-10-21 12:34
继承创建一个线程就会产生一个新的对象,实现是多个线程可以操作同一个对象,具体看看这两种方法的创建线程的代码方式。
作者: 任献东    时间: 2014-10-21 14:28
接口可以多实现  但是继承只能继承一个  Thread扩展性不高ad




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