JUC_死锁原因与定位分析 喜欢ヅ旅行 2023-03-13 06:46 43阅读 0赞 ### 文章目录 ### * 什么是死锁 * 产生原因 * demo * 定位分析 * * jps命令定位进程号 * jstack查看相应进程号 # 什么是死锁 # 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力干涉则它们都无法推进下去。如果系统资源充足,进程的资源请求都能得到满足,死锁出现的可能性会降低,否则就会因为争夺有限的资源而陷入死锁。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoaWxsX0x5bg_size_16_color_FFFFFF_t_70] # 产生原因 # * 系统资源不足 * 进程运行推进的顺序不合适 * 资源分配不当 # demo # import java.util.concurrent.TimeUnit; public class DeadDemo { public static void main(String[] args) { Dead dead=new Dead(); new Thread(dead::A,"1").start(); new Thread(dead::B,"2").start(); } } class Dead{ Object a=new Object(); Object b=new Object(); public void A(){ synchronized (a){ System.out.println(Thread.currentThread().getName()+"持有a锁"); try{ TimeUnit.SECONDS.sleep(2); }catch(InterruptedException e){ e.printStackTrace(); } synchronized (b){ System.out.println(Thread.currentThread().getName()+"持有b锁"); } } } public void B(){ synchronized (b){ System.out.println(Thread.currentThread().getName()+"持有b锁"); try{ TimeUnit.SECONDS.sleep(2); }catch(InterruptedException e){ e.printStackTrace(); } synchronized (a){ System.out.println(Thread.currentThread().getName()+"持有a锁"); } } } } # 定位分析 # ## jps命令定位进程号 ## ![在这里插入图片描述][20200512164949951.png] ## jstack查看相应进程号 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoaWxsX0x5bg_size_16_color_FFFFFF_t_70 1] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoaWxsX0x5bg_size_16_color_FFFFFF_t_70 2] ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoaWxsX0x5bg_size_16_color_FFFFFF_t_70 3] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoaWxsX0x5bg_size_16_color_FFFFFF_t_70]: /images/20230312/37025dd89c2e453d9b0f077c44996748.png [20200512164949951.png]: /images/20230312/58cc7481797d4acbadd244cbd916ef54.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoaWxsX0x5bg_size_16_color_FFFFFF_t_70 1]: /images/20230312/b1c0b9649a2f49ad8b00fe098f7e4f3c.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoaWxsX0x5bg_size_16_color_FFFFFF_t_70 2]: /images/20230312/5a7f6cfddcdb425186c0f0b134d21f36.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoaWxsX0x5bg_size_16_color_FFFFFF_t_70 3]: https://img-blog.csdnimg.cn/20200512165145766.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NoaWxsX0x5bg==,size_16,color_FFFFFF,t_70
还没有评论,来说两句吧...