
前面我们介绍了多线程中的锁机制,锁机制虽然保证了线程的安全性,但是很容易出现死锁现象。当两个线程相互等待对方释放同步监视器时就会发生死锁。对于死锁,虚拟机没有监测和处理机制。一旦出现死锁,整个程序不会发生任何异常,也不会有任何响应,所有的线程处于阻塞状态。
下面我们来模拟一个死锁程序:
class A {
public synchronized void foo(B b) {
System. out.println( "当前线程名:" + Thread.currentThread().getName()
+ " 进入了A的foo方法" ); //①
// 当前线程沉睡,并不释放锁
try {
Thread. slee