{"id":25527853,"date":"2022-06-10T19:35:53","date_gmt":"2022-06-10T14:05:53","guid":{"rendered":"https:\/\/entri.app\/blog\/?p=25527853"},"modified":"2022-11-23T15:39:39","modified_gmt":"2022-11-23T10:09:39","slug":"how-to-handle-deadlock-in-java-examples","status":"publish","type":"post","link":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/","title":{"rendered":"How To Handle Deadlock In Java? Examples"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<label for=\"ez-toc-cssicon-toggle-item-69ee9f2a757be\" class=\"ez-toc-cssicon-toggle-label\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input type=\"checkbox\"  id=\"ez-toc-cssicon-toggle-item-69ee9f2a757be\"  aria-label=\"Toggle\" \/><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#Example_of_Deadlock_in_Java\" >Example of Deadlock in Java<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#How_to_avoid_deadlock\" >How to avoid deadlock?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#How_to_Avoid_Deadlock_in_Java\" >How to Avoid Deadlock in Java?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#Java_Deadlock_Example_and_Solution\" >Java Deadlock Example and Solution<\/a><\/li><\/ul><\/nav><\/div>\n<p>Deadlock in Java is a part of multithreading. Deadlock can occur in a situation when a thread is waiting for an object lock, that is acquired by another thread and second thread is waiting for an object lock that is acquired by first thread. Since, both threads are waiting for each other to release the lock, the condition is called deadlock.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/static.javatpoint.com\/images\/java-deadlock.png\" alt=\"Deadlock in Java\" \/><\/p>\n<h2><a href=\"https:\/\/bit.ly\/3ELmCiA\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-25520910 size-full\" src=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square.png\" alt=\"Python and Machine Learning Square\" width=\"345\" height=\"345\" srcset=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square.png 345w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-300x300.png 300w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-150x150.png 150w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-24x24.png 24w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-48x48.png 48w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-96x96.png 96w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Square-75x75.png 75w\" sizes=\"auto, (max-width: 345px) 100vw, 345px\" \/><\/a><\/h2>\n<h2 class=\"h3\"><span class=\"ez-toc-section\" id=\"Example_of_Deadlock_in_Java\"><\/span><strong>Example of Deadlock in Java<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><strong>TestDeadlockExample1.java<\/strong><\/p>\n<div class=\"codeblock\">\n<div class=\"dp-highlighter\">\n<ol class=\"dp-j\" start=\"1\">\n<li class=\"alt\"><span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">class<\/span>\u00a0TestDeadlockExample1\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">static<\/span>\u00a0<span class=\"keyword\">void<\/span>\u00a0main(String[]\u00a0args)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">final<\/span>\u00a0String\u00a0resource1\u00a0=\u00a0<span class=\"string\">&#8220;ratan\u00a0jaiswal&#8221;<\/span>;<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">final<\/span>\u00a0String\u00a0resource2\u00a0=\u00a0<span class=\"string\">&#8220;vimal\u00a0jaiswal&#8221;<\/span>;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0t1\u00a0tries\u00a0to\u00a0lock\u00a0resource1\u00a0then\u00a0resource2<\/span><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0Thread\u00a0t1\u00a0=\u00a0<span class=\"keyword\">new<\/span>\u00a0Thread()\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">void<\/span>\u00a0run()\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">synchronized<\/span>\u00a0(resource1)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(<span class=\"string\">&#8220;Thread\u00a01:\u00a0locked\u00a0resource\u00a01&#8221;<\/span>);<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">try<\/span>\u00a0{\u00a0Thread.sleep(<span class=\"number\">100<\/span>);}\u00a0<span class=\"keyword\">catch<\/span>\u00a0(Exception\u00a0e)\u00a0{}<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">synchronized<\/span>\u00a0(resource2)\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(<span class=\"string\">&#8220;Thread\u00a01:\u00a0locked\u00a0resource\u00a02&#8221;<\/span>);<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0};<\/li>\n<li class=\"alt\"><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0t2\u00a0tries\u00a0to\u00a0lock\u00a0resource2\u00a0then\u00a0resource1<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0Thread\u00a0t2\u00a0=\u00a0<span class=\"keyword\">new<\/span>\u00a0Thread()\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">void<\/span>\u00a0run()\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">synchronized<\/span>\u00a0(resource2)\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(<span class=\"string\">&#8220;Thread\u00a02:\u00a0locked\u00a0resource\u00a02&#8221;<\/span>);<\/li>\n<li class=\"alt\"><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">try<\/span>\u00a0{\u00a0Thread.sleep(<span class=\"number\">100<\/span>);}\u00a0<span class=\"keyword\">catch<\/span>\u00a0(Exception\u00a0e)\u00a0{}<\/li>\n<li class=\"alt\"><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">synchronized<\/span>\u00a0(resource1)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(<span class=\"string\">&#8220;Thread\u00a02:\u00a0locked\u00a0resource\u00a01&#8221;<\/span>);<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0};<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\"><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0t1.start();<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0t2.start();<\/li>\n<li class=\"\">\u00a0\u00a0}<\/li>\n<li class=\"alt\">}<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"codeblock3\">\n<pre>Thread 1: locked resource 1\r\n        Thread 2: locked resource 2\r\n<\/pre>\n<\/div>\n<p style=\"text-align: center;\"><strong><a href=\"https:\/\/bit.ly\/3ELmCiA\" target=\"_blank\" rel=\"noopener\">Learn Coding in your Language! Enroll Here!<\/a><\/strong><\/p>\n<h3 class=\"h3\"><strong>More Complicated Deadlocks<\/strong><\/h3>\n<p>A deadlock may also include more than two threads. The reason is that it can be difficult to detect a deadlock. Here is an example in which four threads have deadlocked:<\/p>\n<p>Thread 1 locks A, waits for B<\/p>\n<p>Thread 2 locks B, waits for C<\/p>\n<p>Thread 3 locks C, waits for D<\/p>\n<p>Thread 4 locks D, waits for A<\/p>\n<p>Thread 1 waits for thread 2, thread 2 waits for thread 3, thread 3 waits for thread 4, and thread 4 waits for thread 1.<\/p>\n<h2 class=\"h3\"><span class=\"ez-toc-section\" id=\"How_to_avoid_deadlock\"><\/span><strong>How to avoid deadlock?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>A solution for a problem is found at its roots. In deadlock it is the pattern of accessing the resources A and B, is the main issue. To solve the issue we will have to simply re-order the statements where the code is accessing shared resources.<\/p>\n<p><strong>DeadlockSolved.java<\/strong><\/p>\n<div class=\"codeblock\">\n<div class=\"dp-highlighter\">\n<ol class=\"dp-j\" start=\"1\">\n<li class=\"alt\"><span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">class<\/span>\u00a0DeadlockSolved\u00a0{<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">static<\/span>\u00a0<span class=\"keyword\">void<\/span>\u00a0main(String\u00a0ar[])\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DeadlockSolved\u00a0test\u00a0=\u00a0<span class=\"keyword\">new<\/span>\u00a0DeadlockSolved();<\/li>\n<li class=\"alt\"><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">final<\/span>\u00a0resource1\u00a0a\u00a0=\u00a0test.<span class=\"keyword\">new<\/span>\u00a0resource1();<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">final<\/span>\u00a0resource2\u00a0b\u00a0=\u00a0test.<span class=\"keyword\">new<\/span>\u00a0resource2();<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0Thread-1<\/span><\/li>\n<li class=\"\">Runnable\u00a0b1\u00a0=\u00a0<span class=\"keyword\">new<\/span>\u00a0Runnable()\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">void<\/span>\u00a0run()\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">synchronized<\/span>\u00a0(b)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">try<\/span>\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/*\u00a0Adding\u00a0delay\u00a0so\u00a0that\u00a0both\u00a0threads\u00a0can\u00a0start\u00a0trying\u00a0to\u00a0lock\u00a0resources\u00a0*\/<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Thread.sleep(<span class=\"number\">100<\/span>);<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\u00a0<span class=\"keyword\">catch<\/span>\u00a0(InterruptedException\u00a0e)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0e.printStackTrace();<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0Thread-1\u00a0have\u00a0resource1\u00a0but\u00a0need\u00a0resource2\u00a0also<\/span><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">synchronized<\/span>\u00a0(a)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(<span class=\"string\">&#8220;In\u00a0block\u00a01&#8221;<\/span>);<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">};<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\"><span class=\"comment\">\/\/\u00a0Thread-2<\/span><\/li>\n<li class=\"\">Runnable\u00a0b2\u00a0=\u00a0<span class=\"keyword\">new<\/span>\u00a0Runnable()\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">void<\/span>\u00a0run()\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">synchronized<\/span>\u00a0(b)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0Thread-2\u00a0have\u00a0resource2\u00a0but\u00a0need\u00a0resource1\u00a0also<\/span><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">synchronized<\/span>\u00a0(a)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0System.out.println(<span class=\"string\">&#8220;In\u00a0block\u00a02&#8221;<\/span>);<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">};<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\"><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">new<\/span>\u00a0Thread(b1).start();<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">new<\/span>\u00a0Thread(b2).start();<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\"><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0resource1<\/span><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">private<\/span>\u00a0<span class=\"keyword\">class<\/span>\u00a0resource1\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">private<\/span>\u00a0<span class=\"keyword\">int<\/span>\u00a0i\u00a0=\u00a0<span class=\"number\">10<\/span>;<\/li>\n<li class=\"alt\"><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">int<\/span>\u00a0getI()\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a0i;<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\"><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">void<\/span>\u00a0setI(<span class=\"keyword\">int<\/span>\u00a0i)\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">this<\/span>.i\u00a0=\u00a0i;<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0<span class=\"comment\">\/\/\u00a0resource2<\/span><\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">private<\/span>\u00a0<span class=\"keyword\">class<\/span>\u00a0resource2\u00a0{<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">private<\/span>\u00a0<span class=\"keyword\">int<\/span>\u00a0i\u00a0=\u00a0<span class=\"number\">20<\/span>;<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">int<\/span>\u00a0getI()\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">return<\/span>\u00a0i;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"\"><\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">public<\/span>\u00a0<span class=\"keyword\">void<\/span>\u00a0setI(<span class=\"keyword\">int<\/span>\u00a0i)\u00a0{<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<span class=\"keyword\">this<\/span>.i\u00a0=\u00a0i;<\/li>\n<li class=\"alt\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"\">\u00a0\u00a0\u00a0\u00a0}<\/li>\n<li class=\"alt\">}<\/li>\n<\/ol>\n<\/div>\n<\/div>\n<p><strong>Output:<\/strong><\/p>\n<div class=\"codeblock3\">\n<pre>In block 1\r\nIn block 2\r\n<\/pre>\n<\/div>\n<p>In the above code, class DeadlockSolved solves the deadlock kind of situation. It will help in avoiding deadlocks, and if encountered, in resolving them.<\/p>\n<h2 class=\"h3\"><span class=\"ez-toc-section\" id=\"How_to_Avoid_Deadlock_in_Java\"><\/span><strong>How to Avoid Deadlock in Java?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Deadlocks cannot be completely resolved. But we can avoid them by following basic rules mentioned below:<\/p>\n<ol class=\"points\">\n<li><strong>Avoid Nested Locks<\/strong>: We must avoid giving locks to multiple threads, this is the main reason for a deadlock condition. It normally happens when you give locks to multiple threads.<\/li>\n<li><strong>Avoid Unnecessary Locks<\/strong>: The locks should be given to the important threads. Giving locks to the unnecessary threads that cause the deadlock condition.<\/li>\n<li><strong>Using Thread Join<\/strong>: A deadlock usually happens when one thread is waiting for the other to finish. In this case, we can use\u00a0<strong>join<\/strong>\u00a0with a maximum time that a thread will take.<\/li>\n<\/ol>\n<p style=\"text-align: center;\"><a href=\"https:\/\/bit.ly\/3ELmCiA\" target=\"_blank\" rel=\"noopener\"><strong>Learn to code from industry experts! Enroll here<\/strong><\/a><\/p>\n<header class=\"entry-header\" aria-label=\"Content\">\n<div class=\"gb-container gb-container-bbc00baa\">\n<div class=\"gb-inside-container\">\n<h2 class=\"gb-headline gb-headline-7bdea7cd gb-headline-text\"><span class=\"ez-toc-section\" id=\"Java_Deadlock_Example_and_Solution\"><\/span><strong>Java Deadlock Example and Solution<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<div class=\"gb-container gb-container-f276b5c1 inline-post-meta-area\">\n<div class=\"gb-inside-container\">\n<div class=\"gb-headline gb-headline-c988a4c2 dynamic-term-class\">Learn to create a deadlock in Java, programmatically, with an example. Also learn to detect deadlock\u00a0and how to\u00a0solve a deadlock situation in sourcecode.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/header>\n<div class=\"entry-content\">\n<p>As configurations are shared resources and when accessing via Threads, there is always chance of writing incorrect code which can cause in deadlock situation.<\/p>\n<h3><strong>1. Deadlock<\/strong><\/h3>\n<p>In Java, a\u00a0deadlock\u00a0is a situation where minimum two threads are holding the lock on some different resource, and both are waiting for other\u2019s resource to complete its task. And, none is able to leave the lock on the resource it is holding.<\/p>\n<p>&nbsp;<\/p>\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>ResolveDeadLockTest.java<\/caption>\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java keyword\">package<\/code> <code class=\"java plain\">thread;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">class<\/code> <code class=\"java plain\">ResolveDeadLockTest {<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">static<\/code> <code class=\"java keyword\">void<\/code> <code class=\"java plain\">main(String[] args) {<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">ResolveDeadLockTest test = <\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">ResolveDeadLockTest();<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">final<\/code> <code class=\"java plain\">A a = test.<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">A();<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">final<\/code> <code class=\"java plain\">B b = test.<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">B();<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Thread-1<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">Runnable block1 = <\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">Runnable() {<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">void<\/code> <code class=\"java plain\">run() {<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">synchronized<\/code> <code class=\"java plain\">(a) {<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">try<\/code> <code class=\"java plain\">{<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Adding delay so that both threads can start trying to<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ lock resources<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">Thread.sleep(<\/code><code class=\"java value\">100<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">} <\/code><code class=\"java keyword\">catch<\/code> <code class=\"java plain\">(InterruptedException e) {<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Thread-1 have A but need B also<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">synchronized<\/code> <code class=\"java plain\">(b) {<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">System.out.println(<\/code><code class=\"java string\">\"In block 1\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">};<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Thread-2<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">Runnable block2 = <\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">Runnable() {<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">void<\/code> <code class=\"java plain\">run() {<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">synchronized<\/code> <code class=\"java plain\">(b) {<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Thread-2 have B but need A also<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">synchronized<\/code> <code class=\"java plain\">(a) {<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">System.out.println(<\/code><code class=\"java string\">\"In block 2\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">};<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">Thread(block1).start();<\/code><\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">Thread(block2).start();<\/code><\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number45 index44 alt2\"><\/div>\n<div class=\"line number46 index45 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Resource A<\/code><\/div>\n<div class=\"line number47 index46 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java keyword\">private<\/code> <code class=\"java keyword\">class<\/code> <code class=\"java plain\">A {<\/code><\/div>\n<div class=\"line number48 index47 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">private<\/code> <code class=\"java keyword\">int<\/code> <code class=\"java plain\">i = <\/code><code class=\"java value\">10<\/code><code class=\"java plain\">;<\/code><\/div>\n<div class=\"line number49 index48 alt2\"><\/div>\n<div class=\"line number50 index49 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">int<\/code> <code class=\"java plain\">getI() {<\/code><\/div>\n<div class=\"line number51 index50 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">i;<\/code><\/div>\n<div class=\"line number52 index51 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number53 index52 alt2\"><\/div>\n<div class=\"line number54 index53 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">void<\/code> <code class=\"java plain\">setI(<\/code><code class=\"java keyword\">int<\/code> <code class=\"java plain\">i) {<\/code><\/div>\n<div class=\"line number55 index54 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">this<\/code><code class=\"java plain\">.i = i;<\/code><\/div>\n<div class=\"line number56 index55 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number57 index56 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number58 index57 alt1\"><\/div>\n<div class=\"line number59 index58 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Resource B<\/code><\/div>\n<div class=\"line number60 index59 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java keyword\">private<\/code> <code class=\"java keyword\">class<\/code> <code class=\"java plain\">B {<\/code><\/div>\n<div class=\"line number61 index60 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">private<\/code> <code class=\"java keyword\">int<\/code> <code class=\"java plain\">i = <\/code><code class=\"java value\">20<\/code><code class=\"java plain\">;<\/code><\/div>\n<div class=\"line number62 index61 alt1\"><\/div>\n<div class=\"line number63 index62 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">int<\/code> <code class=\"java plain\">getI() {<\/code><\/div>\n<div class=\"line number64 index63 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">return<\/code> <code class=\"java plain\">i;<\/code><\/div>\n<div class=\"line number65 index64 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number66 index65 alt1\"><\/div>\n<div class=\"line number67 index66 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">void<\/code> <code class=\"java plain\">setI(<\/code><code class=\"java keyword\">int<\/code> <code class=\"java plain\">i) {<\/code><\/div>\n<div class=\"line number68 index67 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">this<\/code><code class=\"java plain\">.i = i;<\/code><\/div>\n<div class=\"line number69 index68 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number70 index69 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number71 index70 alt2\"><code class=\"java plain\">}<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Running above code will result in a deadlock for very obvious reasons (explained above). Now we have to solve this issue.<\/p>\n<p style=\"text-align: center;\"><strong><a href=\"https:\/\/bit.ly\/3ELmCiA\" target=\"_blank\" rel=\"noopener\">Grab the opportunity to learn Python with Entri! Click Here<\/a><\/strong><\/p>\n<h3><strong>2. How to avoid deadlock<\/strong><\/h3>\n<p>I believe, the solution to any problem lies in identifying the root of the problem. In our case, it is the pattern of accessing the resources\u00a0<code>A<\/code>\u00a0and\u00a0<code>B<\/code>, is main issue. So, to solve it, we will simply re-order the statements where the code is accessing shared resources.<\/p>\n<p><a href=\"https:\/\/bit.ly\/3ELmCiA\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-25522670 size-full\" src=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1.png\" alt=\"Python and Machine Learning Rectangle\" width=\"970\" height=\"250\" srcset=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1.png 970w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1-300x77.png 300w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1-768x198.png 768w, https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/04\/Python-and-Machine-Learning-Rectangle-1-750x193.png 750w\" sizes=\"auto, (max-width: 970px) 100vw, 970px\" \/><\/a><\/p>\n<div>\n<div id=\"highlighter_673879\" class=\"syntaxhighlighter nogutter java\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<caption>ResolveDeadLockTest.java<\/caption>\n<tbody>\n<tr>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Thread-1<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"java plain\">Runnable block1 = <\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">Runnable() {<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">void<\/code> <code class=\"java plain\">run() {<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">synchronized<\/code> <code class=\"java plain\">(b) {<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">try<\/code> <code class=\"java plain\">{<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Adding delay so that both threads can start trying to<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ lock resources<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">Thread.sleep(<\/code><code class=\"java value\">100<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">} <\/code><code class=\"java keyword\">catch<\/code> <code class=\"java plain\">(InterruptedException e) {<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">e.printStackTrace();<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Thread-1 have A but need B also<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">synchronized<\/code> <code class=\"java plain\">(a) {<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">System.out.println(<\/code><code class=\"java string\">\"In block 1\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"java plain\">};<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"java comments\">\/\/ Thread-2<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"java plain\">Runnable block2 = <\/code><code class=\"java keyword\">new<\/code> <code class=\"java plain\">Runnable() {<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java keyword\">public<\/code> <code class=\"java keyword\">void<\/code> <code class=\"java plain\">run() {<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">synchronized<\/code> <code class=\"java plain\">(b) {<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java comments\">\/\/ Thread-2 have B but need A also<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java keyword\">synchronized<\/code> <code class=\"java plain\">(a) {<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">System.out.println(<\/code><code class=\"java string\">\"In block 2\"<\/code><code class=\"java plain\">);<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"java spaces\">\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"java spaces\">\u00a0\u00a0<\/code><code class=\"java plain\">}<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"java plain\">};<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Deadlock in Java is a part of multithreading. Deadlock can occur in a situation when a thread is waiting for an object lock, that is acquired by another thread and second thread is waiting for an object lock that is acquired by first thread. Since, both threads are waiting for each other to release the [&hellip;]<\/p>\n","protected":false},"author":111,"featured_media":25527910,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[802,1882],"tags":[],"class_list":["post-25527853","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-articles","category-java-programming"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How To Handle Deadlock In Java? Examples - Entri Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How To Handle Deadlock In Java? Examples - Entri Blog\" \/>\n<meta property=\"og:description\" content=\"Deadlock in Java is a part of multithreading. Deadlock can occur in a situation when a thread is waiting for an object lock, that is acquired by another thread and second thread is waiting for an object lock that is acquired by first thread. Since, both threads are waiting for each other to release the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/\" \/>\n<meta property=\"og:site_name\" content=\"Entri Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/entri.me\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-10T14:05:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-11-23T10:09:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png\" \/>\n\t<meta property=\"og:image:width\" content=\"820\" \/>\n\t<meta property=\"og:image:height\" content=\"615\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Feeba Mahin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@entri_app\" \/>\n<meta name=\"twitter:site\" content=\"@entri_app\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Feeba Mahin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/\"},\"author\":{\"name\":\"Feeba Mahin\",\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/person\/f036dab84abae3dcc9390a1110d95d36\"},\"headline\":\"How To Handle Deadlock In Java? Examples\",\"datePublished\":\"2022-06-10T14:05:53+00:00\",\"dateModified\":\"2022-11-23T10:09:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/\"},\"wordCount\":774,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/entri.app\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png\",\"articleSection\":[\"Articles\",\"Java Programming\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/\",\"url\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/\",\"name\":\"How To Handle Deadlock In Java? Examples - Entri Blog\",\"isPartOf\":{\"@id\":\"https:\/\/entri.app\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png\",\"datePublished\":\"2022-06-10T14:05:53+00:00\",\"dateModified\":\"2022-11-23T10:09:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#primaryimage\",\"url\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png\",\"contentUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png\",\"width\":820,\"height\":615,\"caption\":\"How To Handle Deadlock In Java Examples\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/entri.app\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Entri Skilling\",\"item\":\"https:\/\/entri.app\/blog\/category\/entri-skilling\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Java Programming\",\"item\":\"https:\/\/entri.app\/blog\/category\/entri-skilling\/java-programming\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How To Handle Deadlock In Java? Examples\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/entri.app\/blog\/#website\",\"url\":\"https:\/\/entri.app\/blog\/\",\"name\":\"Entri Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/entri.app\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/entri.app\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/entri.app\/blog\/#organization\",\"name\":\"Entri App\",\"url\":\"https:\/\/entri.app\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png\",\"contentUrl\":\"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png\",\"width\":989,\"height\":446,\"caption\":\"Entri App\"},\"image\":{\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/entri.me\/\",\"https:\/\/x.com\/entri_app\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/entri.app\/blog\/#\/schema\/person\/f036dab84abae3dcc9390a1110d95d36\",\"name\":\"Feeba Mahin\",\"url\":\"https:\/\/entri.app\/blog\/author\/feeba123\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How To Handle Deadlock In Java? Examples - Entri Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/","og_locale":"en_US","og_type":"article","og_title":"How To Handle Deadlock In Java? Examples - Entri Blog","og_description":"Deadlock in Java is a part of multithreading. Deadlock can occur in a situation when a thread is waiting for an object lock, that is acquired by another thread and second thread is waiting for an object lock that is acquired by first thread. Since, both threads are waiting for each other to release the [&hellip;]","og_url":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/","og_site_name":"Entri Blog","article_publisher":"https:\/\/www.facebook.com\/entri.me\/","article_published_time":"2022-06-10T14:05:53+00:00","article_modified_time":"2022-11-23T10:09:39+00:00","og_image":[{"width":820,"height":615,"url":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png","type":"image\/png"}],"author":"Feeba Mahin","twitter_card":"summary_large_image","twitter_creator":"@entri_app","twitter_site":"@entri_app","twitter_misc":{"Written by":"Feeba Mahin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#article","isPartOf":{"@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/"},"author":{"name":"Feeba Mahin","@id":"https:\/\/entri.app\/blog\/#\/schema\/person\/f036dab84abae3dcc9390a1110d95d36"},"headline":"How To Handle Deadlock In Java? Examples","datePublished":"2022-06-10T14:05:53+00:00","dateModified":"2022-11-23T10:09:39+00:00","mainEntityOfPage":{"@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/"},"wordCount":774,"commentCount":0,"publisher":{"@id":"https:\/\/entri.app\/blog\/#organization"},"image":{"@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#primaryimage"},"thumbnailUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png","articleSection":["Articles","Java Programming"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/","url":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/","name":"How To Handle Deadlock In Java? Examples - Entri Blog","isPartOf":{"@id":"https:\/\/entri.app\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#primaryimage"},"image":{"@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#primaryimage"},"thumbnailUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png","datePublished":"2022-06-10T14:05:53+00:00","dateModified":"2022-11-23T10:09:39+00:00","breadcrumb":{"@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#primaryimage","url":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png","contentUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2022\/06\/How-To-Handle-Deadlock-In-Java-Examples.png","width":820,"height":615,"caption":"How To Handle Deadlock In Java Examples"},{"@type":"BreadcrumbList","@id":"https:\/\/entri.app\/blog\/how-to-handle-deadlock-in-java-examples\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/entri.app\/blog\/"},{"@type":"ListItem","position":2,"name":"Entri Skilling","item":"https:\/\/entri.app\/blog\/category\/entri-skilling\/"},{"@type":"ListItem","position":3,"name":"Java Programming","item":"https:\/\/entri.app\/blog\/category\/entri-skilling\/java-programming\/"},{"@type":"ListItem","position":4,"name":"How To Handle Deadlock In Java? Examples"}]},{"@type":"WebSite","@id":"https:\/\/entri.app\/blog\/#website","url":"https:\/\/entri.app\/blog\/","name":"Entri Blog","description":"","publisher":{"@id":"https:\/\/entri.app\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/entri.app\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/entri.app\/blog\/#organization","name":"Entri App","url":"https:\/\/entri.app\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png","contentUrl":"https:\/\/entri.app\/blog\/wp-content\/uploads\/2019\/10\/Entri-Logo-1.png","width":989,"height":446,"caption":"Entri App"},"image":{"@id":"https:\/\/entri.app\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/entri.me\/","https:\/\/x.com\/entri_app"]},{"@type":"Person","@id":"https:\/\/entri.app\/blog\/#\/schema\/person\/f036dab84abae3dcc9390a1110d95d36","name":"Feeba Mahin","url":"https:\/\/entri.app\/blog\/author\/feeba123\/"}]}},"_links":{"self":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts\/25527853","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/users\/111"}],"replies":[{"embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/comments?post=25527853"}],"version-history":[{"count":4,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts\/25527853\/revisions"}],"predecessor-version":[{"id":25548040,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/posts\/25527853\/revisions\/25548040"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/media\/25527910"}],"wp:attachment":[{"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/media?parent=25527853"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/categories?post=25527853"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/entri.app\/blog\/wp-json\/wp\/v2\/tags?post=25527853"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}