{"id":139,"date":"2025-04-06T09:40:34","date_gmt":"2025-04-06T09:40:34","guid":{"rendered":"https:\/\/rkdigitalschool.in\/itwala\/?p=139"},"modified":"2025-04-07T18:14:36","modified_gmt":"2025-04-07T18:14:36","slug":"multiple-locks-using-synchronization","status":"publish","type":"post","link":"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/","title":{"rendered":"Multiple Locks Using Synchronization"},"content":{"rendered":"\n<p><strong>Multiple locks<\/strong> using synchronized blocks in Java is a concept where you create synchronization around different parts of the code by locking on <strong>different objects<\/strong>, instead of synchronizing the whole method or relying on a single lock. This allows multiple threads to access separate synchronized blocks simultaneously if the locks they are accessing are different, thereby improving <strong>concurrency<\/strong> and <strong>performance<\/strong>.<\/p>\n\n\n\n<p>the <code>synchronized<\/code> block allows you to define a critical section and specify which object&#8217;s lock should be used to control access. Multiple locks can be achieved by creating separate objects and synchronizing blocks on these different objects.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Purpose of Using Multiple Locks<\/strong><\/h3>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Improved Concurrency<\/strong>: Threads holding different locks can work independently without blocking each other.<\/li>\n\n\n\n<li><strong>Efficiency<\/strong>: Only the critical sections that need protection are locked, minimizing contention and improving performance.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Example without Synchronization <\/h2>\n\n\n\n<pre class=\"wp-block-code has-cyan-bluish-gray-background-color has-background\"><code>package com.rk.digital.school.synchronization;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Random;\n\npublic class Worker {\n\tprivate static Random random=new Random();\n\tprivate static List&lt;Integer> list1=new ArrayList&lt;Integer>();\n\tprivate static List&lt;Integer> list2=new ArrayList&lt;Integer>();\n\t\n\tpublic static void stageOne() {\n\t\ttry {\n\t\t\tThread.sleep(1);\n\t\t}catch (InterruptedException e) {\n\t\t\t\/\/ TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t}\n\t\tlist1.add(random.nextInt(100));\n\t}\n\t\n\tpublic static void stageTwo() {\n\t\ttry {\n\t\t\tThread.sleep(1);\n\t\t}catch (InterruptedException e) {\n\t\t\t\/\/ TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t}\n\t\tlist2.add(random.nextInt(100));\n\t}\n\t\n\tpublic static  void process() {\n\t\tfor (int i = 0; i &lt; 1000; i++) {\n\t\t\tstageOne();\n\t\t\tstageTwo();\n\t\t}\n\t}\n\t\n\tpublic static void main(String&#91;] args) {\n\t\tSystem.out.println(\"Starting .........\");\n\t\t\n\t\tlong start=System.currentTimeMillis();\n\t\t\n\t\tThread t1=new Thread(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tprocess();\n\t\t\t}\n\t\t});\n\t\t\n\t\tThread t2=new Thread(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tprocess();\n\t\t\t}\n\t\t});\n\t\t\n\t\tt1.start();\n\t\tt2.start();\n\t\ttry {\n\t\t\tt1.join();\n\t\t\tt2.join();\n\t\t} catch (InterruptedException e) {\n\t\t\t\/\/ TODO Auto-generated catch block\n\t\t\te.printStackTrace();\n\t\t}\n\t\tlong end =System.currentTimeMillis();\n\t\t\n\t\tSystem.out.println(\"Time taken:\"+(end-start));\n\t\t\n\t\tSystem.out.println(\"List one is ===>\"+list1.size());\n\t\tSystem.out.println(\"List Two is ===>\"+list2.size());\n\t}\n}<\/code><\/pre>\n\n\n\n<p><strong>Output<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-cyan-bluish-gray-background-color has-background\"><code>Starting .........\nTime taken:3119\nList one is ===>1979\nList Two is ===>1976<\/code><\/pre>\n\n\n\n<p>Explanation of Above code <\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>1. Variables and Data Structures<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>random<\/code>: A <code>Random<\/code> instance to generate random integers.<\/li>\n\n\n\n<li><code>list1<\/code><strong> and <\/strong><code>list2<\/code>: Two <code>ArrayList<\/code> instances used to store random integers. These lists are shared between all threads because they are <code>static<\/code>.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>2. <\/strong><code>stageOne()<\/code><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Purpose<\/strong>: Simulates a task (stage one) where a random number is added to <code>list1<\/code> after a brief pause (<code>Thread.sleep(1)<\/code>).<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>3. <\/strong><code>stageTwo()<\/code><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Purpose<\/strong>: Similar to <code>stageOne()<\/code>, but operates on <code>list2<\/code>.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>4. <\/strong><code>process()<\/code><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Purpose<\/strong>: Runs both <code>stageOne()<\/code> and <code>stageTwo()<\/code> tasks <strong>1,000 times<\/strong>, simulating a workload.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>5. <\/strong><code>main()<\/code><strong> Method<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Two threads (<code>t1<\/code> and <code>t2<\/code>) are created, both running the <code>process()<\/code> method, which means both threads execute <code>stageOne()<\/code> and <code>stageTwo()<\/code> 1,000 times each.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>6. Joining Threads<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Purpose<\/strong>: Ensures the <code>main<\/code> thread waits for both threads (<code>t1<\/code> and <code>t2<\/code>) to complete before continuing. Without <code>join()<\/code>, the program might print results before threads finish execution.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>7. Measuring Execution Time<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Measures and prints the time taken for the two threads to finish their tasks.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>8. Printing the Results<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prints the size of <code>list1<\/code> and <code>list2<\/code>. Each list should ideally have 2,000 elements (1,000 from each thread).<\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Potential Issues<\/h6>\n\n\n\n<p>This code does <strong>not use synchronization<\/strong>, which can result in race conditions:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Shared Resource Access<\/strong>: Both threads modify <code>list1<\/code> and <code>list2<\/code> without any synchronization, leading to <strong>inconsistent sizes<\/strong> of the lists.<\/li>\n\n\n\n<li><strong>Race Condition<\/strong>: Multiple threads accessing <code>list1.add()<\/code> or <code>list2.add()<\/code> concurrently could overwrite each other&#8217;s updates or cause data corruption.<\/li>\n<\/ol>\n\n\n\n<h6 class=\"wp-block-heading\">Example with Synchronized method  <\/h6>\n\n\n\n<pre class=\"wp-block-code has-cyan-bluish-gray-background-color has-background\"><code>package com.rk.digital.school.synchronization;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Random;\npublic class Worker {\n\tprivate static Random random=new Random();\n\tprivate static List&lt;Integer> list1=new ArrayList&lt;Integer>();\n\tprivate static List&lt;Integer> list2=new ArrayList&lt;Integer>();\n\t\n\tpublic static synchronized  void stageOne() {\n\t\ttry {\n\t\t\tThread.sleep(1);\n\t\t}catch (InterruptedException e) {\n\t\t\t\/\/ TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t}\n\t\tlist1.add(random.nextInt(100));\n\t}\n\t\n\tpublic static synchronized void stageTwo() {\n\t\ttry {\n\t\t\tThread.sleep(1);\n\t\t}catch (InterruptedException e) {\n\t\t\t\/\/ TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t}\n\t\tlist2.add(random.nextInt(100));\n\t}\n\t\n\tpublic static  void process() {\n\t\tfor (int i = 0; i &lt; 1000; i++) {\n\t\t\tstageOne();\n\t\t\tstageTwo();\n\t\t}\n\t}\n\t\n\tpublic static void main(String&#91;] args) {\n\t\tSystem.out.println(\"Starting .........\");\n\t\t\n\t\tlong start=System.currentTimeMillis();\n\t\t\n\t\tThread t1=new Thread(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tprocess();\n\t\t\t}\n\t\t});\n\t\t\n\t\tThread t2=new Thread(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tprocess();\n\t\t\t}\n\t\t});\n\t\t\n\t\tt1.start();\n\t\tt2.start();\n\t\ttry {\n\t\t\tt1.join();\n\t\t\tt2.join();\n\t\t} catch (InterruptedException e) {\n\t\t\t\/\/ TODO Auto-generated catch block\n\t\t\te.printStackTrace();\n\t\t}\n\t\tlong end =System.currentTimeMillis();\n\t\t\n\t\tSystem.out.println(\"Time taken:\"+(end-start));\n\t\t\n\t\tSystem.out.println(\"List one is ===>\"+list1.size());\n\t\tSystem.out.println(\"List Two is ===>\"+list2.size());\n\t}\n}\n<\/code><\/pre>\n\n\n\n<p> <strong>output<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-cyan-bluish-gray-background-color has-background\"><code>Starting .........\nTime taken:6274\nList one is ===>2000\nList Two is ===>2000<\/code><\/pre>\n\n\n\n<p>if you see the above code out put its taking more time  .<\/p>\n\n\n\n<p><strong>Explanation <\/strong><\/p>\n\n\n\n<p>When you use synchronized methods in Java, it tends to take more time because of the following reasons related to how synchronization impacts thread behavior and resource management:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. Thread Blocking<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>When a thread executes a synchronized method, it acquires the lock for the object or class (depending on whether the method is instance-level or static-level).<\/li>\n\n\n\n<li>If another thread attempts to access the same synchronized method, it must wait until the lock is released, leading to <strong>thread blocking<\/strong> and increased execution time.<\/li>\n\n\n\n<li>Example: While one thread is running <code>stageOne()<\/code>, another thread trying to access <code>stageTwo()<\/code> (if both are synchronized methods) must wait for the lock to be released.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Limited Concurrency<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Synchronization reduces the potential for <strong>concurrent execution<\/strong>.<\/li>\n\n\n\n<li>Instead of multiple threads working independently on different parts of the program, they must coordinate access to synchronized methods, which creates a bottleneck.<\/li>\n\n\n\n<li>For instance:\n<ul class=\"wp-block-list\">\n<li>Both threads in the given code frequently call <code>stageOne()<\/code> and <code>stageTwo()<\/code>.<\/li>\n\n\n\n<li>Synchronization forces them to execute one after another instead of concurrently accessing the shared resources (<code>list1<\/code> and <code>list2<\/code>).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Alternatives to Reduce Execution Time<\/h6>\n\n\n\n<p><strong>Synchronized Blocks<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Instead of synchronizing the entire method, use synchronized blocks only around critical sections (e.g., adding to <code>list1<\/code> or <code>list2<\/code>).<\/li>\n<\/ul>\n\n\n\n<p><strong>Multiple Locks<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use separate locks for different resources to allow more concurrent execution.<\/li>\n\n\n\n<li>Example: Use two <code>Object<\/code> locks for <code>list1<\/code> and <code>list2<\/code>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Example with synchronized block<\/h2>\n\n\n\n<pre class=\"wp-block-code has-cyan-bluish-gray-background-color has-background\"><code>package com.rk.digital.school.synchronization;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Random;\npublic class Worker {\n\tprivate static Random random=new Random();\n\t\n\tprivate static List&lt;Integer> list1=new ArrayList&lt;Integer>();\n\tprivate static List&lt;Integer> list2=new ArrayList&lt;Integer>();\n\t\n\tpublic static void stageOne() {\n\t\ttry {\n\t\t\tThread.sleep(1);\n\t\t}catch (InterruptedException e) {\n\t\t\t\/\/ TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t}\n\t\tsynchronized (list1) {\n\t\tlist1.add(random.nextInt(100));\n\t\t}\n\t}\n\t\n\tpublic static void stageTwo() {\n\t\ttry {\n\t\t\tThread.sleep(1);\n\t\t}catch (InterruptedException e) {\n\t\t\t\/\/ TODO: handle exception\n\t\t\te.printStackTrace();\n\t\t}\n\t\tsynchronized (list1) {\n\t\tlist2.add(random.nextInt(100));\n\t\t}\n\t}\n\t\n\tpublic static  void process() {\n\t\tfor (int i = 0; i &lt; 1000; i++) {\n\t\t\tstageOne();\n\t\t\tstageTwo();\n\t\t}\n\t}\n\t\n\tpublic static void main(String&#91;] args) {\n\t\tSystem.out.println(\"Starting .........\");\n\t\t\n\t\tlong start=System.currentTimeMillis();\n\t\t\n\t\tThread t1=new Thread(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tprocess();\n\t\t\t}\n\t\t});\n\t\t\n\t\tThread t2=new Thread(new Runnable() {\n\t\t\t@Override\n\t\t\tpublic void run() {\n\t\t\t\tprocess();\n\t\t\t}\n\t\t});\n\t\t\n\t\tt1.start();\n\t\tt2.start();\n\t\ttry {\n\t\t\tt1.join();\n\t\t\tt2.join();\n\t\t} catch (InterruptedException e) {\n\t\t\t\/\/ TODO Auto-generated catch block\n\t\t\te.printStackTrace();\n\t\t}\n\t\tlong end =System.currentTimeMillis();\n\t\t\n\t\tSystem.out.println(\"Time taken:\"+(end-start));\n\t\t\n\t\tSystem.out.println(\"List one is ===>\"+list1.size());\n\t\tSystem.out.println(\"List Two is ===>\"+list2.size());\n\t}\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Multiple locks using synchronized blocks in Java is a concept where you create synchronization around different parts of the code by locking on different objects, instead of synchronizing the whole method or relying on a single lock. This allows multiple threads to access separate synchronized blocks simultaneously if the locks they are accessing are different, thereby improving concurrency and performance. the synchronized block allows you to define a critical section and specify which object&#8217;s lock should be used to control access. Multiple locks can be achieved by creating separate objects and synchronizing blocks on these different objects. Purpose of Using Multiple Locks Example without Synchronization Output Explanation of Above code 1. Variables and Data Structures 2. stageOne() 3. stageTwo() 4. process() 5. main() Method 6. Joining Threads 7. Measuring Execution Time 8. Printing the Results Potential Issues This code does not use synchronization, which can result in race conditions: Example with Synchronized method output if you see the above code out put its taking more time . Explanation When you use synchronized methods in Java, it tends to take more time because of the following reasons related to how synchronization impacts thread behavior and resource management: 1. Thread Blocking 2. Limited Concurrency Alternatives to Reduce Execution Time Synchronized Blocks: Multiple Locks: Example with synchronized block<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[49],"tags":[73,53,60,86,87,50,51,85,62,69,52],"class_list":["post-139","post","type-post","status-publish","format-standard","hentry","category-multithreading","tag-comparing-sequential-and-multithreaded-programming-in-java","tag-how-multithreading-works-in-hava","tag-java-multithreading-example","tag-multiple-locks","tag-multiple-locks-using-synchronization","tag-multithreading","tag-multithreading-in-java","tag-multithreading-pdf-book","tag-multithreading-with-runnable-and-thread-classes-in-java","tag-print-numbers-simultaneously-in-java","tag-what-is-multithreading"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Multiple Locks Using Synchronization - Latest technology<\/title>\n<meta name=\"description\" content=\"Multiple locks using synchronized where you create synchronization around different parts of the code by locking on different objects\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Multiple Locks Using Synchronization - Latest technology\" \/>\n<meta property=\"og:description\" content=\"Multiple locks using synchronized where you create synchronization around different parts of the code by locking on different objects\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/\" \/>\n<meta property=\"og:site_name\" content=\"Latest technology\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-06T09:40:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-04-07T18:14:36+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/multithreading\\\/multiple-locks-using-synchronization\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/multithreading\\\/multiple-locks-using-synchronization\\\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/#\\\/schema\\\/person\\\/4f448d9a71848134136ddfa1cf279e67\"},\"headline\":\"Multiple Locks Using Synchronization\",\"datePublished\":\"2025-04-06T09:40:34+00:00\",\"dateModified\":\"2025-04-07T18:14:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/multithreading\\\/multiple-locks-using-synchronization\\\/\"},\"wordCount\":557,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/#organization\"},\"keywords\":[\"Comparing Sequential and Multithreaded Programming in Java\",\"how multithreading works in hava\",\"Java Multithreading Example\",\"multiple locks\",\"multiple locks using synchronization\",\"multithreading\",\"multithreading in java\",\"multithreading pdf book\",\"Multithreading with Runnable and Thread Classes in Java\",\"Print Numbers Simultaneously in Java\",\"what is multithreading\"],\"articleSection\":[\"Multithreading\"],\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/multithreading\\\/multiple-locks-using-synchronization\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/multithreading\\\/multiple-locks-using-synchronization\\\/\",\"url\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/multithreading\\\/multiple-locks-using-synchronization\\\/\",\"name\":\"Multiple Locks Using Synchronization - Latest technology\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/#website\"},\"datePublished\":\"2025-04-06T09:40:34+00:00\",\"dateModified\":\"2025-04-07T18:14:36+00:00\",\"description\":\"Multiple locks using synchronized where you create synchronization around different parts of the code by locking on different objects\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/multithreading\\\/multiple-locks-using-synchronization\\\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/multithreading\\\/multiple-locks-using-synchronization\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/multithreading\\\/multiple-locks-using-synchronization\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Multiple Locks Using Synchronization\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/#website\",\"url\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/\",\"name\":\"https:\\\/\\\/rkdigitalschool.in\",\"description\":\"Just another WordPress site\",\"publisher\":{\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/#organization\",\"name\":\"rkdigitalschool\",\"url\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/Cyan-Modern-Technology-Logo.png\",\"contentUrl\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/wp-content\\\/uploads\\\/2025\\\/02\\\/Cyan-Modern-Technology-Logo.png\",\"width\":500,\"height\":500,\"caption\":\"rkdigitalschool\"},\"image\":{\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/#\\\/schema\\\/person\\\/4f448d9a71848134136ddfa1cf279e67\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b09e5e51ec0f5c9f2780d52c30c05a971daa8a81a4010b45a43198f6e6f86473?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b09e5e51ec0f5c9f2780d52c30c05a971daa8a81a4010b45a43198f6e6f86473?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b09e5e51ec0f5c9f2780d52c30c05a971daa8a81a4010b45a43198f6e6f86473?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\"],\"url\":\"https:\\\/\\\/rkdigitalschool.in\\\/itwala\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Multiple Locks Using Synchronization - Latest technology","description":"Multiple locks using synchronized where you create synchronization around different parts of the code by locking on different objects","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:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/","og_locale":"en_US","og_type":"article","og_title":"Multiple Locks Using Synchronization - Latest technology","og_description":"Multiple locks using synchronized where you create synchronization around different parts of the code by locking on different objects","og_url":"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/","og_site_name":"Latest technology","article_published_time":"2025-04-06T09:40:34+00:00","article_modified_time":"2025-04-07T18:14:36+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/#article","isPartOf":{"@id":"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/"},"author":{"name":"admin","@id":"https:\/\/rkdigitalschool.in\/itwala\/#\/schema\/person\/4f448d9a71848134136ddfa1cf279e67"},"headline":"Multiple Locks Using Synchronization","datePublished":"2025-04-06T09:40:34+00:00","dateModified":"2025-04-07T18:14:36+00:00","mainEntityOfPage":{"@id":"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/"},"wordCount":557,"commentCount":0,"publisher":{"@id":"https:\/\/rkdigitalschool.in\/itwala\/#organization"},"keywords":["Comparing Sequential and Multithreaded Programming in Java","how multithreading works in hava","Java Multithreading Example","multiple locks","multiple locks using synchronization","multithreading","multithreading in java","multithreading pdf book","Multithreading with Runnable and Thread Classes in Java","Print Numbers Simultaneously in Java","what is multithreading"],"articleSection":["Multithreading"],"inLanguage":"en","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/","url":"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/","name":"Multiple Locks Using Synchronization - Latest technology","isPartOf":{"@id":"https:\/\/rkdigitalschool.in\/itwala\/#website"},"datePublished":"2025-04-06T09:40:34+00:00","dateModified":"2025-04-07T18:14:36+00:00","description":"Multiple locks using synchronized where you create synchronization around different parts of the code by locking on different objects","breadcrumb":{"@id":"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/rkdigitalschool.in\/itwala\/multithreading\/multiple-locks-using-synchronization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rkdigitalschool.in\/itwala\/"},{"@type":"ListItem","position":2,"name":"Multiple Locks Using Synchronization"}]},{"@type":"WebSite","@id":"https:\/\/rkdigitalschool.in\/itwala\/#website","url":"https:\/\/rkdigitalschool.in\/itwala\/","name":"https:\/\/rkdigitalschool.in","description":"Just another WordPress site","publisher":{"@id":"https:\/\/rkdigitalschool.in\/itwala\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rkdigitalschool.in\/itwala\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":"Organization","@id":"https:\/\/rkdigitalschool.in\/itwala\/#organization","name":"rkdigitalschool","url":"https:\/\/rkdigitalschool.in\/itwala\/","logo":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/rkdigitalschool.in\/itwala\/#\/schema\/logo\/image\/","url":"https:\/\/rkdigitalschool.in\/itwala\/wp-content\/uploads\/2025\/02\/Cyan-Modern-Technology-Logo.png","contentUrl":"https:\/\/rkdigitalschool.in\/itwala\/wp-content\/uploads\/2025\/02\/Cyan-Modern-Technology-Logo.png","width":500,"height":500,"caption":"rkdigitalschool"},"image":{"@id":"https:\/\/rkdigitalschool.in\/itwala\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/rkdigitalschool.in\/itwala\/#\/schema\/person\/4f448d9a71848134136ddfa1cf279e67","name":"admin","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/secure.gravatar.com\/avatar\/b09e5e51ec0f5c9f2780d52c30c05a971daa8a81a4010b45a43198f6e6f86473?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b09e5e51ec0f5c9f2780d52c30c05a971daa8a81a4010b45a43198f6e6f86473?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b09e5e51ec0f5c9f2780d52c30c05a971daa8a81a4010b45a43198f6e6f86473?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/rkdigitalschool.in\/itwala"],"url":"https:\/\/rkdigitalschool.in\/itwala\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/posts\/139","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/comments?post=139"}],"version-history":[{"count":14,"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/posts\/139\/revisions"}],"predecessor-version":[{"id":153,"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/posts\/139\/revisions\/153"}],"wp:attachment":[{"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/media?parent=139"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/categories?post=139"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rkdigitalschool.in\/itwala\/wp-json\/wp\/v2\/tags?post=139"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}