<html>
<head>
<meta content="text/html; charset=ISO-8859-2"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">Sziasztok!<br>
<br>
Itt van egy nagyon jó kis leírás a DCL problémáiról és a
megoldásokról.<br>
<a class="moz-txt-link-freetext" href="http://www.javamex.com/tutorials/double_checked_locking.shtml">http://www.javamex.com/tutorials/double_checked_locking.shtml</a><br>
<a class="moz-txt-link-freetext" href="http://www.javamex.com/tutorials/double_checked_locking_fixing.shtml">http://www.javamex.com/tutorials/double_checked_locking_fixing.shtml</a><br>
<br>
"Note that this is OK as of Java 5 <em>because</em> the
definition of <tt>volatile</tt> was
specifically changed to make it OK. Accessing a volatile variable
has the semantics of synchronization
as of Java 5. In other words Java 5 ensures that the
unsycnrhonized volatile read <em>must</em> happen after
the write has taken place, and the reading thread will see the
correct values of all fields on <tt>MyFactory</tt>."<br>
<br>
Emberünk azt is leírja, hogy a volatile és a final (!) kulcsszavak
szemantikája megváltozott Java 5-ben. Ettől a verziótól kezdve a
final változó is elegendő, mert mindkét kulcsszó memory barrier-t
is jelent, ami többek között azt is eredményezi, hogy:<br>
- a regiszterváltózók szinkronizálásra kerülnek<br>
- a referencia beállítása csak akkor történik meg, amikor az
objektum már teljesen inicializált állapotban van.<br>
<br>
Tehát Java 5-től kezdve a Péter által a cikkben taglalt sorrendi
probléma már nem jelentkezhet (az újabb JLS megköveteli a
sorrendiséget).<br>
<br>
Üdv,<br>
Stivi<br>
<br>
<br>
On 2012-07-09 13:27, Laszlo Hornyak wrote:<br>
</div>
<blockquote
cite="mid:CAKRHFXWdvZv+--APPsM-=VCP0mZv3d_STOA-Cc-fa09hQJ77Mw@mail.gmail.com"
type="cite">
<pre wrap="">2012/7/9 Gábor Garami <a class="moz-txt-link-rfc2396E" href="mailto:gabor.garami@hron.me"><gabor.garami@hron.me></a>:
</pre>
<blockquote type="cite">
<pre wrap="">Egykenel nem lenne megoldas az early check + synchronized?
public static Singleton getInstance() {
if(instance != null) return instance;
synchronized(instance) { /* foo */ ; return instance; }
}
</pre>
</blockquote>
<pre wrap="">Hali!
Asszem ez csak akkor mukodne teljesen megbizhatoan, ha az instance-t
volatile-nek jelolod. Kulonben amikor aszondod hogy "if(instance !=
null) return instance;" ezen a ponton ha mar valaki adott neki
erteket, de a te szaladban be van cacehlve egy null ertek, akkor
letrehozol egy uj peldanyt es azzal helyettesited be, mikozben egy
masik szal meg a regi erteket hasznalja. Szoval nem egeszen
bolondbiztos.
Egyszeru esetekben, amikor csak nem akarsz temp objektumokat
letrehozni es totalisan mentes az osztalyod minden konfiguraciotol, en
leginkab csak csinalni szoktam egy ilyet. (pl spring rowmapperek)
public final static KakukkRowMapper instance = new KakukkRowMapper();
//single instance
private KakukkRowMapper() {} //no nyuka-piszka!
</pre>
<blockquote type="cite">
<pre wrap="">
A ket return persze csunya.
Garami Gábor
E-mail: <a class="moz-txt-link-abbreviated" href="mailto:gabor.garami@hron.me">gabor.garami@hron.me</a>
Tel: +36 20 235 9621
MSN: <a class="moz-txt-link-abbreviated" href="mailto:hrgy@vipmail.hu">hrgy@vipmail.hu</a>
Skype: hron84
2012/7/9 <a class="moz-txt-link-rfc2396E" href="mailto:istvan.ketler@lhsystems.com"><istvan.ketler@lhsystems.com></a>
</pre>
<blockquote type="cite">
<pre wrap="">
Szia,
Egyszerű öröklődés: már a legelején a jó B konstruktor van, benne van a
super(n). Ezt gondolom nem így akartad.
Optimalizálás: nem gondolkodtam a miérteken, de a számok azt mutatják,
hogy a programozó által "optimálisnak" gondolt megoldás sokszor nem jobb,
sőt akár rosszabb is lehet, mint a "lassúnak" vélt megoldás. Ez az igazság
azt hiszem ismét beigazolódott.
Jó kis posztok, bár az egyke esetén is hasznos lett volna leírni a
gondolkodni lusták számára, hogy miért az a megoldás, ami...
Üdvözlettel,
Iván
István Ketler
Senior Consultant
Lufthansa Systems Hungaria Kft.
Development Center Pest
Neumann János u. 1/e
1117 Budapest
Hungary
Tel: +36 1 887-2815
Fax: +36 1 887-2977
Mobile: +36 30 600-4936
Room: Infopark E, Room LH2-24
e-mail: <a class="moz-txt-link-abbreviated" href="mailto:istvan.ketler@lhsystems.com">istvan.ketler@lhsystems.com</a>
Internet: <a class="moz-txt-link-abbreviated" href="http://www.LHsystems.hu">www.LHsystems.hu</a>
Sitz der Gesellschaft / Corporate Headquarters: Lufthansa Systems Hungaria
Kft, Budapest, Fövarosi Birosag 01-09-463417
Geschaeftsfuehrung / Management Board: Monika Houck
From: <a class="moz-txt-link-abbreviated" href="mailto:javalist-bounces@lists.javaforum.hu">javalist-bounces@lists.javaforum.hu</a>
[<a class="moz-txt-link-freetext" href="mailto:javalist-bounces@lists.javaforum.hu">mailto:javalist-bounces@lists.javaforum.hu</a>] On Behalf Of Peter Verhas
Sent: Monday, July 09, 2012 10:35 AM
To: Java lista
Subject: [Javalist] új Java blog
Új java blog magyarul
<a class="moz-txt-link-freetext" href="http://tifyty.wordpress.com/">http://tifyty.wordpress.com/</a>
Írok benne mindenféle hülyeséget, aztán majd jól megköpköditek.
--
Verhás Péter
<a class="moz-txt-link-abbreviated" href="mailto:peter@verhas.com">peter@verhas.com</a>
+36(30)9306805
skype: verhas
</pre>
</blockquote>
</blockquote>
</blockquote>
<br>
</body>
</html>