Java多线程:死锁、优先级与线程组详解
1. 线程阻塞与死锁
线程在运行过程中可能会进入阻塞状态,而对象的同步方法会阻止其他线程访问该对象,直到同步锁被释放。这就可能导致死锁的发生,即一个线程等待另一个线程,而后者又等待其他线程,最终形成一个循环,所有线程都无法继续执行。
死锁的发生并不频繁,但一旦出现,调试起来会非常棘手。而且,Java语言本身并没有提供直接的支持来防止死锁,开发者需要通过精心设计来避免。
2. Java 2中弃用的线程方法
为了降低死锁的可能性,Java 2中弃用了 Thread 类的 stop() 、 suspend() 、 resume() 和 destroy() 方法。
- stop() 方法 :弃用的原因是它不会释放线程已经获取的锁,如果对象处于不一致状态,其他线程可能会对其进行查看和修改,导致难以检测的问题。建议使用标志位来控制线程的终止,例如在 Blocking.java 中,通过标志位让线程在退出 run() 方法时终止自身。
- interrupt() 方法 :当线程处于阻塞状态(如等待输入)时,无法像 Blocking.java 中那样轮询标志位,此时可以使用 Thread 类的 in
超级会员免费看
订阅专栏 解锁全文
905

被折叠的 条评论
为什么被折叠?



