{"id":419,"date":"2011-05-08T23:21:00","date_gmt":"2011-05-08T23:21:00","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/2012\/10\/how-does-jvm-handle-locks.html"},"modified":"2012-10-21T19:45:45","modified_gmt":"2012-10-21T19:45:45","slug":"how-jvm-handle-locks","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html","title":{"rendered":"How does JVM handle locks"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left\">As we are talking about the latest  version of Sun Hotspot Java Virtual Machine 1.6 there&#8217;re the following  three types of locks performed by JVM when you try to acquire lock from <i>java.util.concurrent.locks.Lock<\/i> implementation or enter synchronized block:<\/p>\n<ul>\n<li><strong>biased<\/strong>:  sometimes even in concurrent systems there&#8217;s no contention and JVM  shouldn&#8217;t borrow mutex from OS for perform locking in this case. Hotspot  can operate with its own internal data structures to simulate locking  in more effective way. For example, if synchronized part of code is <i>not<\/i>  executed concurrently in real time, JVM assigns an owner thread id to  an object used as mutex in your Java code using CAS operation and  additionally stores the reentrancy count if CAS is passed. It is <i>biased lock<\/i>  &#8211; the &#8216;lightest&#8217; type of locks done by JVM. Reentrancy count will be  updated by lock owner thread just as usual local variable without CAS.  If CAS fails it means another thread already gets this lock and in this  case JVM <i>stops<\/i> the mutex owner thread, <i>flushes<\/i> thread context into the main memory and checks the reentrancy count. If it&#8217;s 0 JVM escalates lock to <i>thin<\/i> type otherwise to <i>fat<\/i> (I assume the main purpose is the wait time, it should be very small if lock is thin). <i>Note<\/i>  Hotspot uses the same field for storing owner thread id in mutex object  as for caching identity hash code. Thus if you retrieve identity hash  code on you mutex once then it will be unavailable for biased locking  even it was already used as biased. More info about biased locks is  described in David Dice&#8217;s <a href=\"http:\/\/blogs.sun.com\/dave\/entry\/biased_locking_in_hotspot\" target=\"_blank\">blog<\/a>.\n<\/li>\n<li><strong>thin<\/strong>: it&#8217;s a simple <a href=\"http:\/\/en.wikipedia.org\/wiki\/Spinlock\" target=\"_blank\">spin<\/a>  lock. It helps to save time for thread context switching when time for  spinning is quite small. When one thread tries to acquire an occupied  mutex it spins some time until the lock will be freed. The count of  spins is based on internal JVM resolution and may depend from different  factors: statistics gathered by JVM about your application, count of  used threads, CPU and so forth. JVM determines when thin lock becomes  inefficient and escalates it to <i>fat<\/i> lock.\n<\/li>\n<li><strong>fat<\/strong>: the &#8216;strongest&#8217; type of  lock when JVM requests for an OS mutex and uses OS scheduler engine for  threads parkings and wake ups. It is much costly than previous types  because in this case JVM should directly interact with OS every time  when thread acquires and frees the lock.<\/li>\n<\/ul>\n<p><strong><i>Reference: <\/i><\/strong><a href=\"http:\/\/slava-technical.blogspot.com\/2011\/04\/how-does-jvm-handle-locks.html\">How does JVM handle locks<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a> at <a href=\"http:\/\/slava-technical.blogspot.com\/\">Slava Technical Blog<\/a>.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<div style=\"margin: 0px\"><strong><i>Related Articles :<\/i><\/strong><\/div>\n<ul>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/04\/erlang-vs-java-memory-architecture.html\">Erlang vs Java memory architecture<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/02\/java-forkjoin-parallel-programming.html\">Java Fork\/Join for Parallel Programming<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/02\/java-memory-model-quick-overview-and.html\">Java Memory Model &#8211; Quick overview and things to notice<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/03\/dreaded-double-checked-locking-idiom-in.html\">The dreaded double checked locking idiom in Java<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2010\/09\/java-best-practices-queue-battle-and.html\">Java Best Practices \u2013 Queue battle and the Linked ConcurrentHashMap<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>As we are talking about the latest version of Sun Hotspot Java Virtual Machine 1.6 there&#8217;re the following three types of locks performed by JVM when you try to acquire lock from java.util.concurrent.locks.Lock implementation or enter synchronized block: biased: sometimes even in concurrent systems there&#8217;s no contention and JVM shouldn&#8217;t borrow mutex from OS for &hellip;<\/p>\n","protected":false},"author":35,"featured_media":148,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[88],"class_list":["post-419","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-core-java","tag-concurrency"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>How does JVM handle locks - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"As we are talking about the latest version of Sun Hotspot Java Virtual Machine 1.6 there&#039;re the following three types of locks performed by JVM when you\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How does JVM handle locks - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"As we are talking about the latest version of Sun Hotspot Java Virtual Machine 1.6 there&#039;re the following three types of locks performed by JVM when you\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2011-05-08T23:21:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-10-21T19:45:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Borislav Andruschuk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Borislav Andruschuk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html\"},\"author\":{\"name\":\"Borislav Andruschuk\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/2f34d0fabfa08f789b547686e1e5c86c\"},\"headline\":\"How does JVM handle locks\",\"datePublished\":\"2011-05-08T23:21:00+00:00\",\"dateModified\":\"2012-10-21T19:45:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html\"},\"wordCount\":470,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"keywords\":[\"Concurrency\"],\"articleSection\":[\"Core Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html\",\"name\":\"How does JVM handle locks - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"datePublished\":\"2011-05-08T23:21:00+00:00\",\"dateModified\":\"2012-10-21T19:45:45+00:00\",\"description\":\"As we are talking about the latest version of Sun Hotspot Java Virtual Machine 1.6 there're the following three types of locks performed by JVM when you\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/java-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/05\\\/how-jvm-handle-locks.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Core Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/core-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"How does JVM handle locks\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/2f34d0fabfa08f789b547686e1e5c86c\",\"name\":\"Borislav Andruschuk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1c6b5d49cbfe10395148f745d657b91d5544e7bbf570fb37510a5239491d5919?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1c6b5d49cbfe10395148f745d657b91d5544e7bbf570fb37510a5239491d5919?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1c6b5d49cbfe10395148f745d657b91d5544e7bbf570fb37510a5239491d5919?s=96&d=mm&r=g\",\"caption\":\"Borislav Andruschuk\"},\"sameAs\":[\"http:\\\/\\\/slava-technical.blogspot.com\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Borislav-Andruschuk\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How does JVM handle locks - Java Code Geeks","description":"As we are talking about the latest version of Sun Hotspot Java Virtual Machine 1.6 there're the following three types of locks performed by JVM when you","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:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html","og_locale":"en_US","og_type":"article","og_title":"How does JVM handle locks - Java Code Geeks","og_description":"As we are talking about the latest version of Sun Hotspot Java Virtual Machine 1.6 there're the following three types of locks performed by JVM when you","og_url":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2011-05-08T23:21:00+00:00","article_modified_time":"2012-10-21T19:45:45+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","type":"image\/jpeg"}],"author":"Borislav Andruschuk","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Borislav Andruschuk","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html"},"author":{"name":"Borislav Andruschuk","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/2f34d0fabfa08f789b547686e1e5c86c"},"headline":"How does JVM handle locks","datePublished":"2011-05-08T23:21:00+00:00","dateModified":"2012-10-21T19:45:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html"},"wordCount":470,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","keywords":["Concurrency"],"articleSection":["Core Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html","url":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html","name":"How does JVM handle locks - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","datePublished":"2011-05-08T23:21:00+00:00","dateModified":"2012-10-21T19:45:45+00:00","description":"As we are talking about the latest version of Sun Hotspot Java Virtual Machine 1.6 there're the following three types of locks performed by JVM when you","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/java-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2011\/05\/how-jvm-handle-locks.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Core Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/core-java"},{"@type":"ListItem","position":4,"name":"How does JVM handle locks"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/2f34d0fabfa08f789b547686e1e5c86c","name":"Borislav Andruschuk","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/1c6b5d49cbfe10395148f745d657b91d5544e7bbf570fb37510a5239491d5919?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1c6b5d49cbfe10395148f745d657b91d5544e7bbf570fb37510a5239491d5919?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1c6b5d49cbfe10395148f745d657b91d5544e7bbf570fb37510a5239491d5919?s=96&d=mm&r=g","caption":"Borislav Andruschuk"},"sameAs":["http:\/\/slava-technical.blogspot.com\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/Borislav-Andruschuk"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/419","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=419"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/419\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/148"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=419"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=419"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=419"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}