日期:2014-05-18  浏览次数:20672 次

java中对线程的两种方法的使用
java中线程的运用,是实现Runnable 好还是继承thread
JAVA? 线程

------解决方案--------------------
实现Runnable
------解决方案--------------------
Runnable当做任务的接口,他并不是一个线程,只是为了将线程和业务执行逻辑分离,Runnable当做一个任务的标识,Thread是线程API的体现。将任务执行单元和线程的执行控制区分开来,Thread就是一个线程的操作者
------解决方案--------------------
实现Runnable
------解决方案--------------------
在JAVA语言中类和类之间是单继承的,而接口和接口之间是多继承的.也就是说,如果你继承了Thread类之后就再也不能继承其他的类了,这在实际开发中是相当不方便的.而实现Runnable接口就不会有这个麻烦了,因为接口是多继承的,你实现一个接口之后只要你需要就可以继续实现其他的接口而没有任何限制.从这一点上来说,实现Runnable比继承Thread要好许多
------解决方案--------------------
实现Runnable,继承Thread那种,除非你的派生类也是个表达线程对象本身的class。
------解决方案--------------------
public class Task implements Runnable{
------解决方案--------------------
有两种实现方法,分别使用new Thread()和new Thread(runnable)形式,第一种直接调用thread的run方法,所以,我们往往使用Thread子类,即new SubThread()。第二种调用runnable的run方法。
有两种实现方法,分别是继承Thread类与实现Runnable接口 
用synchronized关键字修饰同步方法 
反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。
------解决方案--------------------
THREAD 书写上方便些 Runnable 在逻辑框架上你可以根据你的爱好
------解决方案--------------------
引用:
在JAVA语言中类和类之间是单继承的,而接口和接口之间是多继承的.也就是说,如果你继承了Thread类之后就再也不能继承其他的类了,这在实际开发中是相当不方便的.而实现Runnable接口就不会有这个麻烦了,因为接口是多继承的,你实现一个接口之后只要你需要就可以继续实现其他的接口而没有任何限制.从这一点上来说,实现Runnable比继承Thread要好许多


这个是正解