Odo mna par postrehov, len co som letmo zbadal.
Davajte si pozor na counting thread workerov - myslim ze v Jave 6 by mali mat primitivne typu (okrem long a double) pristup do pamate ako atomicku operaciu. To ale neznamena, ze --- worker++ --- je atomicka operacia - tu si treba uvedomit,ze ++ sa sklada z troch operacii, ktore su sice kazda atomicka (load, add, store), ale spolu nie su atomicke a musia sa lockovat (alebo vymysliet nieco ine)
VOLATILE vam tak isto nezaruci uplnu atomickost bez side-effects, ktore sa mozu vyskytnut (preto sa pouziva napriklad iba pri boolean-och, kde potrebujete mat istotu,ze je to true a iny side-effect (nieco, cokolvek ine ako true) vam neprekaza --- preto sa volatile moc neodporuca pri ciselnych typoch, tam je bud konkretne cislo alebo nieco ide dost odlisny stav).