java的线程锁可以重入的锁,锁对象也可以不同
1 2 3 4 5 6
| public void add(int m) { synchronized (1ock) { this.value += m; synchronized (lock) { this.another += m; }}}
|
不同线程获取多个不同对象的锁可能导致死锁

如何避免死锁
始终以LockA 和LockB也就是不要交叉使用
总结
死锁产生的条件:
●多线程各自持有不同的锁,并互相试图获取对方已持有的锁
如何避免死锁:.
●多线程获取锁的顺序要一致