如何造成死锁:
在下面的代码中,线程t1对A进行加锁,线程t2对B进行加锁,但是t1想要B,t2想要A,这样就会导致,两个线程都在等待对方释放锁,从而造成死锁。
如何避免死锁:
1、避免一个线程同时获取多个锁。
2、避免一次线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源
3、尝试使用定时锁,使用lock.tryLock(timeout)来代替使用内部锁机制。
4、对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况
如何造成死锁:
在下面的代码中,线程t1对A进行加锁,线程t2对B进行加锁,但是t1想要B,t2想要A,这样就会导致,两个线程都在等待对方释放锁,从而造成死锁。
如何避免死锁:
1、避免一个线程同时获取多个锁。
2、避免一次线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源
3、尝试使用定时锁,使用lock.tryLock(timeout)来代替使用内部锁机制。
4、对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况