Applets ikke er den eneste måten webutviklere kan bruke Java -kode for å lage websider . Servlets fungere som individuelle objekter på en JavaServer Pages ( JSP ) nettsted. Men servlets møter de samme problemene som andre Java- programmer når samtidige oppgaver endre den samme variabelen ut av sekvensen . Dette er på grunn av programvaren modell av servlets , men det finnes måter å håndtere flere prosesser i servlet å forebygge disse problemene. Servlet Object Model
Servlets fungere som klasser som websider instantiate som objekter . Når en webutvikler kaller en servlet -objekt i en ramme , går servlet koden til Java kompilatoren , da den kompilerte klasse fil går til serverens Java Runtime Environment ( JRE ) . Når siden lastes for betrakteren , vil JRE utføre som samlet objekt fil på dette spesifikke HTML rammen. Imidlertid er rammen for servlets fungerer ikke sofistikert nok til å håndtere flere eksempel stedene.
Servlet Samtidighet
Webutviklere kan legge samme objekt i ulike rammer på samme side . Objektets kode vil gjennomføre uavhengig i hver av disse rammene . Det vil imidlertid være koden fra samme eksempel. I motsetning til forskjellige instanser av samme klasse som alle har uavhengige sett med variable verdier , vil hver av disse rammene være utføring av samme sett med variable verdier. Dette skaper spørsmålet om samtidighet mellom servlet stedene.
Servlet Multitasking
Servere håndterer multitasking i Java servlets ved å opprette flere tråder i én enkelt prosess , ikke av opprette flere prosesser . Dette kan være multi - tasking som en del av servlet faktiske oppgave , eller på grunn av webutvikler innebygging samme objekt i flersidevisninger rammer. JRE vil behandle hver ramme som en egen tråd . Disse flere tråder fra flere rammer kan overlappe og korrupte variabler når trådene endre den samme variabel på samme tid .
Concurrency Safety
p Det er to standard måter å håndtere samtidighet med Java servlets . Den første er Javas standard metode for å hindre ødeleggelse av data : lock stedene. Disse lar en tråd for å bokstavelig talt låse ut andre tråder tilgang til en variabel før det er gjort med variabelen. Den andre måten er å alltid eksplisitt referanse variabler og verdier i stedet for å referere "self ", et begrep for selve objektet . Objektets samme tilstanden vil variere mellom rammene , slik kode som refererer til bestemte verdier ikke vil møte de samme samtidighet feil som kode som viser til et objekts tilstand .