摘要: 简单来讲,死锁就是两个线程各自获得一个监视器的情况下,在互相等待对方的监视器,就会发生死锁。 运行该程序会发现,什么结果都不会打印,因为程序死锁了。那么如何定位死锁的问题呢? 1、使用jps获得当年java虚拟机进程的pid 2、使用jstack工具打印堆栈,在打印信息的最后会告诉我们发现了一处死锁 阅读全文
posted @ 2016-03-22 13:47 gdjdsjh 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 使用了CAS原子操作,lock函数将owner设置为当前线程,并且预测原来的值为空。unlock函数将owner设置为null,并且预测值为当前线程。 当有第二个线程调用lock操作时由于owner值不为空,导致循环一直被执行,直至第一个线程调用unlock函数将owner设置为null,第二个线程 阅读全文
posted @ 2016-03-22 10:32 gdjdsjh 阅读(176) 评论(0) 推荐(0) 编辑