{"id":594,"date":"2010-04-21T19:29:46","date_gmt":"2010-04-21T17:29:46","guid":{"rendered":"http:\/\/www.tutego.de\/blog\/javainsel\/2010\/04\/thema-der-woche-double-checked-locking\/"},"modified":"2010-04-22T10:42:37","modified_gmt":"2010-04-22T08:42:37","slug":"thema-der-woche-double-checked-locking","status":"publish","type":"post","link":"https:\/\/www.tutego.de\/blog\/javainsel\/2010\/04\/thema-der-woche-double-checked-locking\/","title":{"rendered":"Thema der Woche: Double-checked locking"},"content":{"rendered":"<p>Lies <a href=\"http:\/\/www.ibm.com\/developerworks\/java\/library\/j-dcl.html\">http:\/\/www.ibm.com\/developerworks\/java\/library\/j-dcl.html<\/a> und erkl\u00e4re, wo es genau bei<\/p>\n<pre>public static Singleton getInstance()\r\n{\r\n  if (instance == null)\r\n  {\r\n    synchronized(Singleton.class) {  \/\/1\r\n      if (instance == null)          \/\/2\r\n        instance = new Singleton();  \/\/3\r\n    }\r\n  }\r\n  return instance;\r\n\r\n}<\/pre>\n<p>zu einem Problem bei nebenl\u00e4ufigen Threads kommen kann. Warum funktioniert es auch bei 2 synch. Bl\u00f6cken nicht? Was hat das dem Memory-Modell zu tun?<\/p>\n<p>Hinweis: Es geht nicht darum, ein Singleton korrekt zu implementieren, sondern das Java Memory Modell zu verstehen und Probleme aufzudecken, die sich aus der Nebenl\u00e4ufigkeit ergeben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Lies http:\/\/www.ibm.com\/developerworks\/java\/library\/j-dcl.html und erkl\u00e4re, wo es genau bei public static Singleton getInstance() { if (instance == null) { synchronized(Singleton.class) { \/\/1 if (instance == null) \/\/2 instance = new Singleton(); \/\/3 } } return instance; } zu einem Problem bei nebenl\u00e4ufigen Threads kommen kann. Warum funktioniert es auch bei 2 synch. Bl\u00f6cken nicht? Was hat [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[13],"tags":[],"class_list":["post-594","post","type-post","status-publish","format-standard","hentry","category-die-wochentliche-dosis-java"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/comments?post=594"}],"version-history":[{"count":2,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/594\/revisions"}],"predecessor-version":[{"id":596,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/posts\/594\/revisions\/596"}],"wp:attachment":[{"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/media?parent=594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/categories?post=594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tutego.de\/blog\/javainsel\/wp-json\/wp\/v2\/tags?post=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}