解决死锁的常用方法:
1.避免一个线程同时获取多个锁
2.避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源
3.尝试使用定时锁,使用lokc.tryLock(timeout)来替代使用内部锁机制
4.对于数据库,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况
5.使用jstack和ThreadMXBean查找死锁原因,然后解决。
参考自:《Java并发编程的艺术》
解决死锁的常用方法:
1.避免一个线程同时获取多个锁
2.避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源
3.尝试使用定时锁,使用lokc.tryLock(timeout)来替代使用内部锁机制
4.对于数据库,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况
5.使用jstack和ThreadMXBean查找死锁原因,然后解决。
参考自:《Java并发编程的艺术》