黑马程序员技术交流社区
标题:
线程面试题练习问题
[打印本页]
作者:
wjj410830911
时间:
2013-11-18 18:14
标题:
线程面试题练习问题
java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
java中有两种方法实现一个线程,分别是继承Thread类与实现Runnable接口。
用synchronized关键字修饰同步方法。
可是为什么stop()和suspend()方法为何不推荐使用啊?
作者:
zuiaichiyu
时间:
2013-11-18 19:02
JDK上面有 你可以看下
stop() 已过时。 该方法具有固有的不安全性。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。stop 的许多使用都应由只修改某些变量以指示目标线程应该停止运行的代码来取代。目标线程应定期检查该变量,并且如果该变量指示它要停止运行,则从其运行方法依次返回。如果目标线程等待很长时间(例如基于一个条件变量),则应使用 interrupt 方法来中断该等待。
suspend() 已过时。 该方法已经遭到反对,因为它具有固有的死锁倾向。如果目标线程挂起时在保护关键系统资源的监视器上保持有锁,则在目标线程重新开始以前任何线程都不能访问该资源。如果重新开始目标线程的线程想在调用 resume 之前锁定该监视器,则会发生死锁。这类死锁通常会证明自己是“冻结”的进程。
作者:
zy888802
时间:
2013-11-18 23:08
有三个方法 继承Thread 实现Runnable 还有就是张孝祥老师高新技术中说到的线程池 1.5的新特性
stop()不安全 suspend()会出现死锁的现象。
平时建议使用Runnable,避免了单继承,共享了数据
面试建议使用线程池,体现了自己技术掌握
作者:
HACKMA
时间:
2013-11-19 03:09
一起进来学习的
作者:
黄炳期
时间:
2013-11-19 12:39
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2