面试题1、什么情况下导致线程死锁,遇到线程死锁该怎么解决?(代码案例说明)
分析:所谓的线程死锁是指多个线程因竞争资源而造成的一种僵局(即相互等待),若无外力作用,这些进程都将无法向前推进。如下图产生线程死锁的一个例子:
上图代码运行后,会处于线程o1等待线程o2,线程o2又等待线程o1释放资源,所以处于相互等待的状态,即程序也就产生线程死锁。那么如何解决才能避免死锁的产生呢?在有些情况下的死锁是可以避免的,两种用于避免死锁的技术:
1、加锁顺序(线程按照一定的顺序加锁),实现代码如下:
防死锁的方式2:加锁时限(线程尝试获取锁的时候加上一定的时限,超过时限则放弃对该锁的请求,并释放自己占有的锁),案例代码如下图:
閱讀更多 悟空程序生活 的文章