码迷,mamicode.com
首页 > 其他好文 > 详细

实现Runnable接口和继承Thread类之间的区别

时间:2017-06-15 21:38:14      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:ase   研究   database   bsp   cal   共享   实例   executor   new t   

在Java语言中,我们都知道,有两种创建线程的方式,一中是使用Runnable接口,另一种是使用Thread类。

public class DemoRunnable implements Runnable {
    public void run() {
        //Code
    }
}
//with a "new Thread(demoRunnable).start()" call

public class DemoThread extends Thread {
    public DemoThread() {
        super("DemoThread");
    }
    public void run() {
        //Code
    }
}
//with a "demoThread.start()" call

已经有大量的辩论,哪一个更好。嗯,我也试着找出答案,下面是我的研究:

1)  实现Runnable接口是首选方法。在这里,您并不需要修改Thread类的行为。你只是给线程一些东西运行。这意味着组合是最好的方式。

2)  Java只支持单一继承,所以你只能继承一个类。

3)  用接口的方式将你的代码和线程实现分离,更加清晰。

4)  实现Runnable使你的类更灵活。如果您继承Thread类,那么您所做的操作总是处于一个线程中。然而如果你采用实现Runnable接口,您可以在一个线程中运行它,或者将它传递给某种执行器(executor),或者只是将它作为一个单线程应用程序中的任务传递给它。

5)  通过继承Thread类,每个线程都有一个相关联的唯一对象,而实现Runnable接口,多线程可以共享同一个Runnable实例。

6)  如果你工作在JDK 4或更低,那么有一个bug:

  http://bugs.java.com/bugdatabase/view_bug.do;jsessionid=5869e03fee226ffffffffc40d4fa881a86e3:WuuT?bug_id=4533087

  它在Java 1.5中被修复,但Sun公司不打算修复1.4中的bug。

Happy Learning !!

 

实现Runnable接口和继承Thread类之间的区别

标签:ase   研究   database   bsp   cal   共享   实例   executor   new t   

原文地址:http://www.cnblogs.com/keeplearnning/p/7019843.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!