[Java lista] A synchronized mítosz

Miklos Pocsaji miklos.pocsaji at gmail.com
2008. Júl. 31., Cs, 14:33:11 CEST


Sziasztok!

Egy olyan projekten dolgozom, ahol nekünk is utána kellett nézni annak, hogy
hány servlet is készül egy konténeren belül és hogyan hívódnak a metódusok.
A servlet specifikációból:

For a servlet not hosted in a distributed environment (the default), the
servlet
container must use only one instance per servlet declaration. However, for a
servlet
implementing the SingleThreadModel interface, the servlet container may
instantiate multiple instances to handle a heavy request load and serialize
requests
to a particular instance.

Az én értelmezésem szerint: egy servlet példány van, annak a metódusait
hívják a sok-sok szálból konkurrensen, szinkornizálás nélkül. Ha
implementálod a SingleThreadModel interface-t, akkor garantált, hogy egy
példányon egyszerre csak egy szál "dolgozik", de ilyenkor lehet több servlet
is. (A SingleThreadModel interfész deprecated Servlet API 2.4 óta...)

Ăśdv,
Miki.

2008/7/30 Marai Laszlo <lists at atleta.hu>

> On Wed, 30 Jul 2008 11:28:41 +0200
> Auth Gábor <auth.gabor at javaforum.hu> wrote:
>
>  Hali!
>
> >   De a servlet osztály összes példányváltozója "automatikusan" static,
> > mivel a servletből egy példány keletkezik mindössze, és az összes azon
> > az egy példányon szolgálódik ki. Tehát szálbiztosan kell a
> > példányváltozókat használni, például szinkronizált metóduson át írni
> > Ĺ‘ket... :) --
>
> En ugy emlekszem, hogy ennel is rosszabb a helyzet: nem tudod, hogy hany
> peldanyod lesz, mert a kontener keszithet tobbet is (pl. ennek pont abban
> az esetben van ertelme, ha tul lassu a kiszolgalas a sok szinkronizalas
> miatt). Ettol fuggetlenul szinkronizaltal kell hasznalni a
> peldanyvaltozokat, de a legjobb ha nem is hasznalod oket :).
>
> A cikked meg nekem egy kicsit furcsa volt, mert nem ertettem az elejen,
> hogy mi lenne az a mitosz. Tenyleg talalkoztal olyan programozokkal, akik
> ennyire nem ertettek a synchronized hataskoret? A cikk cime alapjan azt
> hittem, hogy arrol a tizeves mitoszrol lesz szo, hogy a synchronized
> 'lassu'. Errol egyszer olvastam egy jo attekintest. Amit hianyoltam a
> cikkbol az az, hogy elmagyarazza, hogy pontosan mire is szinkronizal a
> synchronized kulcsszo amikor nem statikus metodusra akasztjuk (this)
> illetve amikor statikusra (this.getClass()).
>
>  atleta
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: http://javagrund.hu/pipermail/javalist/attachments/20080731/af03e46d/attachment.html 


További információk a(z) Javalist levelezőlistáról