A rovnou si odpovim :-)
V kontstruktoru totiz je uvedeno:
this.mutex = this
"Zahada" je tedy vyresena. Omlouvam se.
LZ
3.4.08, Lukáš Zapletal <[EMAIL PROTECTED]>:
> Dobry den,
>
> mam dotaz ohledne Collections.synchronizedMap. Tato metoda obali mapu
> (nebo resp. jina metoda jinou kolekci) implementaci, ktera
> synchronizuje vsechny metody oproti clenske promenne "mutex". Toto je
> implementace Sunu ve verzich 5 a 6.
>
> V dokumentaci se ale doporucuje pri iterovani pouzit synchronized
> blok, aby nedochazelo ke "concurrent exceptions". Co me udivuje je
> vsak to, ze pro synchronized blok ma byt pouzit jako mutex primo
> instance kolekce (v prikladu je to "m"). Tohle by preci nemelo
> fungovat, kdyz se kolekce interne synchronizuje oproti prvku
> "m.mutex", ne?
>
> Map m = Collections.synchronizedMap(new HashMap());
> ...
> Set s = m.keySet(); // Needn't be in synchronized block
> ...
> synchronized(m) { // Synchronizing on m, not s!
> Iterator i = s.iterator(); // Must be in synchronized block
> while (i.hasNext())
> foo(i.next());
> }
>
> Mozna potrebuju postouchnout, neco mi zrejme unika. Diky
>
>
> --
> Lukas Zapletal
> http://lukas.zapletalovi.com
>
--
Lukas Zapletal
http://lukas.zapletalovi.com