由class文件可以new出对象,我们简单认识 下java对象,对象有个对象头信息,也就是这个对象概述,其中一条信息就是对象锁,也就是我们当前对象有没有被锁定,被哪个引用锁定。synchronized:synchronized是java关键词,如果运用到方法上代表我们锁的是这个方法,如果我们锁的代码块,代表再这个代码块内我们持有这个锁,Java Effective也是提倡减小锁的范围。我们进入同步代码块会加锁,执行完同步代码块会释放锁。我们只需要分析同步代码块的哪里没有执行就好了,看下面一个例子我们刚才认为,死锁是由于同步代码块没有执行完,导致不会释放锁,我们分析以上两个死锁的原因。

史上最通俗理解的Java死锁代码演示

史上最通俗理解的Java死锁代码演示

史上最通俗理解的Java死锁代码演示

史上最通俗理解的Java死锁代码演示

史上最通俗理解的Java死锁代码演示