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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wjj410830911 中级黑马   /  2013-11-18 18:14  /  1683 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?

java中有两种方法实现一个线程,分别是继承Thread类与实现Runnable接口。
用synchronized关键字修饰同步方法。
可是为什么stop()和suspend()方法为何不推荐使用啊?

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 同学,为什么你不分开问。急死我了都~~.

查看全部评分

4 个回复

倒序浏览
JDK上面有 你可以看下
stop()   已过时。 该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。stop 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。目标线程应定期检查该变量,并且如果该变量指示它要停止运行,则从其运行方法依次返回。如果目标线程等待很长时间(例如基于一个条件变量),则应使用 interrupt 方法来中断该等待。
suspend() 已过时。 该方法已经遭到反对,因为它具有固有的死锁倾向。如果目标线程挂起时在保护关键系统资源的监视器上保持有锁,则在目标线程重新开始以前任何线程都不能访问该资源。如果重新开始目标线程的线程想在调用 resume 之前锁定该监视器,则会发生死锁。这类死锁通常会证明自己是“冻结”的进程。

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 缺少自己的分析。木有分分~

查看全部评分

回复 使用道具 举报
有三个方法 继承Thread 实现Runnable 还有就是张孝祥老师高新技术中说到的线程池 1.5的新特性
stop()不安全 suspend()会出现死锁的现象。
平时建议使用Runnable,避免了单继承,共享了数据
面试建议使用线程池,体现了自己技术掌握
回复 使用道具 举报
一起进来学习的
回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马