死锁是什么
死锁是一种多线程的常见错误,指的是两个线程互相调用时,两个线程都被锁住,两个线程卡死的情况。
具体:
当A锁住后打印“拿到了A锁,准备拿B锁”,这个时候cpu的执行资格被B抢走了(注意是执行资格不是执行权,锁的意思是里面的代码全部执行完,线程出来,锁自动打开)
B进行代码,走else if部分B线程被锁住,同时B尝试调用A线程,但A线程被卡死,A线程又尝试调用B线程,从此代码卡死。
如何避免死锁
不要让两个锁互相嵌套
死锁是一种多线程的常见错误,指的是两个线程互相调用时,两个线程都被锁住,两个线程卡死的情况。
具体:
当A锁住后打印“拿到了A锁,准备拿B锁”,这个时候cpu的执行资格被B抢走了(注意是执行资格不是执行权,锁的意思是里面的代码全部执行完,线程出来,锁自动打开)
B进行代码,走else if部分B线程被锁住,同时B尝试调用A线程,但A线程被卡死,A线程又尝试调用B线程,从此代码卡死。
不要让两个锁互相嵌套