Ahoj,

problem v jave je v memory modelu v tom, ze pokud bezite na viceprocessorove 
masine, pak vam spravny obsah pameti
zajisti bud mit promennou volatile (necachuje se a tudis se vzdy cte z hlavni 
pameti) a nebo pouziti synchronized,
protoze pri opousteni synchronized sekce se invaluduje cache a tim se zajisti 
"prenos" dat mezi procesory.

Tj. pokud mate viceprocesorovy stroj a nepouzivate synchronized muzete se 
dockat podivnych veci.

Jirka

Zdeněk Troníček napsal(a):
> 
> Cituji z emailu od Lukas Barton <[EMAIL PROTECTED]>:
> 
>> Zdeněk Troníček wrote:
>>> Tak jeste jednou:
>>> Trida p = new Trida();
>>>
>>> V okamziku kdy new vrati odkaz na nove vytvoreny objekt, je tento objekt
>>> inicializovan (zajistuje to tzv. Initialization safety). To implikuje napr.
>> to,
>>> ze finalni promenne maji nastaveny hodnoty.
>>> Jak muze jine vlakno ziskat odkaz na takto vytvoreny objekt drive nez dojde
>> k
>>> navratu z new? (Krome zminene moznosti predani odkazu v konstruktoru
>> Tridy).
>>> Mohl bys naznacit jak to bude vypadat v kodu?
>>>
>> Uvedu tedy kod primo ze specifikace:
>>
>> http://java.sun.com/docs/books/jls/third_edition/html/memory.html#66562
>>
>> class FinalFieldExample {
>>   final int x;
>>   int y;
>>   static FinalFieldExample f;
>>   public FinalFieldExample() {
>>     x = 3;
>>     y = 4;
>>   }
>>   static void writer() {
>>     f = new FinalFieldExample();
>>   }
>>   static void reader() {
>>     if (f != null) {
>>       int i = f.x; // guaranteed to see 3
>>       int j = f.y; // could see 0
>>     }
>>   }
>> }
> 
> Hmm. Hezke. To ovsem neni ani nahodou odpoved na moji otazku "Jak muze vlakno
> ziskat odkaz na objekt vytvareny v jinem vlakne drive nez dojde k navratu z
> new".
> 
>>> Tak ted uz Ti vubec nerozumim. Co tedy rikas? Ze hodnoty finalnich
>> promennych
>>> jsou vzdy nastaveny spravne nebo ze objekt nemusi byt inicializovan,
>> protoze
>>> muze dojit k prehazeni poradi instrukci?
>> Hodnoty finalnich promennych jsou nastaveny spravne.
>> Ostatni muzou byt pro jine vlakno v nedefinovanem stavu (viz priklad vyse).
> 
> Takze jsme se po nekolika mailech shodli na tom, co jsem psal v prvnim mailu?
> :o). Mimochodem, ten stav tech promennych neni nedefinovany, jen nemusi byt
> aktualni.
> 
> Z.T.

-- 
Jiří Mareš (mailto:[EMAIL PROTECTED])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic

Odpovedet emailem