Applets ikke den eneste måde web -udviklere kan bruge Java-kode til at lave hjemmesider . Servlets fungerer som individuelle objekter på en JavaServer Pages ( JSP) site. Men servlets støder på de samme problemer som andre Java- programmer, når samtidige opgaver ændrer den samme variabel ud af rækkefølgen. Dette er på grund af softwaren model servlets , men der er måder at håndtere flere processer i servlet at forebygge disse problemer. Servlet objekt model
Servlets fungere som klasser, websider instantiere som objekter . Når en web-udvikler kalder en servlet objekt i en ramme , servlet koden går til Java compiler, så kompileret class filen går til serverens Java Runtime Environment (JRE) . Når siden belastninger for seeren , vil JRE udføre den kompileret objekt fil inden for denne specifikke HTML ramme. Men rammerne for servlets opererer, er ikke sofistikerede nok til at håndtere flere instans objekter.
Servlet Concurrency
webudviklere kan integrere det samme objekt i forskellige rammer på samme side. Objektets kode vil udføre selvstændigt i hver af disse rammer. Dog vil det være koden fra samme instans . I modsætning til forskellige instanser af samme klasse , som alle har uafhængige sæt af variable værdier, vil hver af disse rammer skal udføre off det samme sæt af variable værdier. Dette skaber spørgsmålet om samtidighed blandt servlet objekter.
Servlet Multitasking
servere håndterer multitasking i Java servlets ved at oprette flere tråde i en enkelt proces , ikke ved oprette flere processer . Dette kan være multi- tasking som en del af servlet faktiske opgave , eller på grund af webudvikler indlejring det samme objekt i flersidede frames. JRE vil behandle hver ramme som en separat tråd. Disse mange tråde fra flere rammer kan overlappe og korrupte variabler , når trådene ændrer den samme variabel på samme tid .
Concurrency Safety
Der er to standard måder at forvalte concurrency med Java servlets . Den første er Javas standard metode til at forhindre data korruption : lock objekter. Disse giver en tråd til bogstaveligt lockout andre tråde fra adgang til en variabel , indtil det sker med variablen . Den anden måde er at altid udtrykkeligt referencevariabler og værdier i stedet for henvisninger "self ", en betegnelse for selve objektet . Objektet nøjagtige tilstand vil variere mellem rammerne , så kode, referencer bestemte værdier ikke vil støde de samme concurrency fejl som kode, referencer et objekts tilstand.