xl_echo编辑整理,欢迎转载,转载请声明文章来源。更多IT、编程案例、资料请联系QQ:1280023003,加群298140694。百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!!
什么是线程死锁?
所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。
线程死锁又分为很多种情况
线程交叉死锁
当线程A执行需要拿到线程B的资源,线程B执行需要拿到线程A的资源,两个线程将资源给到对方自己就没法执行,这样的情况下最容易产生死锁。
通俗点举个例子:
有个朋友去面试,面试到最后面,双方都比较满意。这个时候面试官突然问:你知道什么是线程死锁吗?你给我解释一下,我就给你offer。面试的朋友立马回答:你给我offer我就解释死锁。咋一听好像在间歇性绑架offer,但是仔细一想,这个线程死锁的例子很生动。
内存不足导致的线程僵持死锁
当线程A执行拿到了10MB内存,线程B执行拿到了10MB内存,但是两个线程完成执行都需要20MB内存,刚好系统又只有20MB内存了。这个时候,线程A就会等待B线程释放资源,相反一样,就会造成死锁。