This HTML5 document contains 16 embedded RDF statements represented using HTML+Microdata notation.

The embedded RDF content will be recognized by any processor of HTML5 Microdata.

Namespace Prefixes

PrefixIRI
wikipedia-huhttp://hu.wikipedia.org/wiki/
dcthttp://purl.org/dc/terms/
dbohttp://dbpedia.org/ontology/
foafhttp://xmlns.com/foaf/0.1/
dbpedia-huhttp://hu.dbpedia.org/resource/
prop-huhttp://hu.dbpedia.org/property/
rdfshttp://www.w3.org/2000/01/rdf-schema#
rdfhttp://www.w3.org/1999/02/22-rdf-syntax-ns#
n5http://hu.dbpedia.org/resource/Sablon:
n12http://www.cs.umd.edu/~pugh/java/memoryModel/
provhttp://www.w3.org/ns/prov#
xsdhhttp://www.w3.org/2001/XMLSchema#
n10http://hu.dbpedia.org/resource/Kategória:

Statements

Subject Item
dbpedia-hu:Lusta_tartó
rdfs:label
Lusta tartó
dct:subject
n10:Java-kódpéldák n10:Programtervezési_minták
dbo:wikiPageID
1523455
dbo:wikiPageRevisionID
23102441
dbo:wikiPageExternalLink
n12:DoubleCheckedLocking.html n12:jsr-133-faq.html n12:
prop-hu:wikiPageUsesTemplate
n5:Jegyzetek n5:Portál n5:Fordítás
dbo:abstract
A lusta tartó a számítógép-programozásban egy lusta betöltésű egyke programtervezési minta. A Java minden verziója valósítja meg a . Ennek az a feltétele, hogy a példányt ne lehessen elérni a csomagon kívül. A duplán ellenőrzött zárolást a Java 1.5 előtti verziók nem biztosították. public class Something { private Something {} private static class LazyHolder { static final Something INSTANCE = new Something; } public static Something getInstance { return LazyHolder.INSTANCE; }} A megvalósítás az inicializáció szakaszára hagyatkozik, amit a Java specifikációja (JLS) is előír. Ha a virtuális gép betölti a Something osztályt, akkor inicializálnia kell. Mivel nincsenek osztályváltozók, az inicializáció triviális. A LazyHolder osztály szintű osztálydefiníció mindaddig nem inicializálódik, amíg nem kell végrehajtani. Ehhez meg kell hívni a Something osztály getInstance metódusát. A LazyHolder inicializációjának eredménye az INSTANCE osztályváltozó, amit a külső osztály privát konstruktora inicializál. Mivel az osztály inicializációja a Java specifikációja szerint szekvenciális, nincs szükség további szinkronizációra. És mivel az inicializációs szakasz szekvenciális műveletben írja az INSTANCE változót, a getInstance minden hívása ugyanazt a korrektül inicializált INSTANCE példányt adja vissza minden szinkronizációs adminisztráció nélkül. A minta előnye, hogy hatékony és szálbiztos egykét nyújt nélkül, és hatékonyabb, mint a megvárakoztató szinkronizáció. Nem alkalmas arra, hogy olyan osztályt inicializáljon, amiből több példányra lenne szükség. Alkalmazásakor biztosítani kell, hogy a Something konstrukciója garantáltan sikeres legyen. Ugyanis ha a JVM nem tudja inicializálni az osztályt, akkor a betöltő NoClassDefFoundError hibával leáll. Példa: public class PughFail { public static class Something { private Something { super; System.out.println(this.getClass.getName + " called"); if (System.currentTimeMillis > 0) { System.out.println("EMULATING INIT FAILURE"); throw new RuntimeException("EMULATING INIT FAILURE"); } } private static class LazyHolder { private static final Something INSTANCE = new Something; } public static Something getInstance { return LazyHolder.INSTANCE; } } public static void main(String[] args) { System.out.println("First try"); try { Something.getInstance; } catch (Throwable t) { System.out.println(t); } System.out.println("Second try"); try { Something.getInstance; } catch (Throwable t) { System.out.println(t); } }} Eredmény: First tryPughFail$Something calledEMULATING INIT FAILUREjava.lang.ExceptionInInitializerErrorSecond tryjava.lang.NoClassDefFoundError: Could not initialize class PughFail$Something$LazyHolder
prov:wasDerivedFrom
wikipedia-hu:Lusta_tartó?oldid=23102441&ns=0
dbo:wikiPageLength
3899
foaf:isPrimaryTopicOf
wikipedia-hu:Lusta_tartó
Subject Item
wikipedia-hu:Lusta_tartó
foaf:primaryTopic
dbpedia-hu:Lusta_tartó