程序员
董欣欣的个人博客

java 死锁概念及实例

什么是死锁?

简单来说,死锁就是一个线程拿到第一把锁,继续执行代码时候还需要拿第二把锁,而第二个线程执行时候已经先拿走了第二把锁,且还需要拿第一把锁。此刻线程一需要等待第二把锁,线程二需要等待第一把锁,因此变成了互相等待的情况,导致了死锁的产生。(至少两个线程,两个资源,两个锁,这样才可以产生死锁。)

产生死锁实例如下:

注意:

1、两个线程等待对方锁的情况叫死锁,如果两个线程不是等待对方锁而是同时处于睡眠状态情况,不是死锁而是阻塞。

2、死锁的产生可以用sleep睡眠,但是不能用wait(),因为wait()休眠等待期间会释放对象的锁,这样就不会产生死锁。

3、非静态成员变量锁的实质是对象

未经允许不得转载:董不董 - 董欣欣的个人博客 » java 死锁概念及实例
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

www.dongxinxin.cn 技术博客

联系我关于我