死锁是什么?

线程之间互相等待,互不释放锁,一种无意义的循环就是死锁

死锁必要的四个条件:

互斥

占有等待:自己本身占有的锁不进行释放或还没释放,又去拿别人占有的锁,然后进入恶性等待

不可剥夺:除了自己可以释放锁外,不能通过其他方式释放锁

循环等待:线程之间互相等待

解决:

redis的锁可以设置过期时间

mysql自己有死锁检测

设置锁最大的等待时机

你可能感兴趣的:(线程)