Moc diky za podmety. Vcera jsem si precetl ty synchronizace a pouzil jsem je.

Otovi moc dik za hinty pro distribuovane prostredi.

Pekny den
Pet

Oto Buchta napsal(a):

On Thursday 03 of November 2005 18:08, Martin Kuba wrote:
Burdik Petr wrote:
Nejsem si ale jist co se stane, kdyz danou metodu singletonu zavolaji
dva ruzne jine objekty najednou. Jestli se provede napred pro jednoho a
pak pro druheho a nedojde tedy ke zdvojeni uid. Tedy kdyz zavola nekdo
metodu securityManagera addUser(User user).
To, co řešíte, je v informatice známo jako problém vzájemného
vyloučení, anglicky "mutual exclusion". Má víc řešení,
v jazyce Java se používají tzv. monitory, reprezentované
bloky

synchronized(objekt) {
  ... kritická sekce kde smí být je jedno vlákno ...
}

Jenom doplnim, ze v Jave se v distribuovanem prostredi s uspechem pouziva nekolik reseni:
- JMS queue a v onMessage() pak synchronizovany blok
- synchronizovane EJB Counter ;-)
- a spousta dalsich reseni postavenych na principu klient-server :-D
- lze vyuzit exkluzivitu JNDI bindu: neni mozne bindnout jiz bindnutou hodnotu, je treba rebind. V tomto pripade seqence bind(lock)->get(value)->value++->rebind(value)->unbind(lock) funguje jako atomicky "take" znamy ze spaceovych systemu (TupleSpace, Jini,STITCH,...)

Nelze-li pouzit centralizovanou spravu, pak lze pouzit nektery z klasickych algoritmu pro volbu vedouciho a toho pak docasne prohlasit za centralu.


Odpovedet emailem