Vanja Petreski: Ok, ajmo detaljnije. Stvar je veoma prosta:
Server kreira samo jednu instancu servleta. Tada poziva init metodu gde se radi inicijalizacija servleta. Ako postoje globalne varijable, tu mozes da ih inicijalizujes.
Kada server detektuje request on pravi jedan thread (ali ne thread servleta) koji poziva service metodu servleta. Ta metoda detektuje o kakvom se tipu requesta radi, i ko zna sta jos i u zavisnosti od toga poziva ili doGet ili doPost metodu.
Iz ovoga je jasno da kada imamo vise requestova, imamo vise threadova koji istovremeno gadjaju service metodu naseg jednom instanciranog servleta.
A to znaci da moramo da radimo sinhronizaciju deljenih varijabli. Na lokalnim varijablama metoda ne moramo da sinhronizujemo.
Jasnije?
Btw, moguce je da servlet implementira SingleThreadModel interfejs, sto garantuje da samo jedan thread moze da pristupi servletu, ali ovo nije dobra praksa. Bolje je sinhronizovati tamo gde je potrebno!