Applets inte är den enda vägen webbutvecklare kan använda Java-kod för att skapa webbplatser . Servlets fungera som enskilda objekt på ett JavaServer Pages ( JSP ) webbplats . Men Servlets stöter på samma problem som andra Java -program när samtidiga uppgifter ändra samma variabel i ordningsföljd . Detta är på grund av programvaran modellen av servlets , men det finns sätt att hantera flera processer inom servlet att förhindra att dessa frågor . Servlet Object Model
Servlets fungera som klasser som webbsidor instantiate som objekt . När en webbutvecklare kallar en servlet objekt i en ram , går servlet kod till Java-kompilator , då den kompilerade class -filen går till serverns Java Runtime Environment ( JRE ) . När sidan laddas för betraktaren kommer JRE exekvera som sammanställts objektfilen inom det specifika HTML- ram . Dock är den ram inom vilken servlets fungerar inte tillräckligt sofistikerad för att hantera flera exempel objekt .
Servlet samtidighet
Webbutvecklare kan bädda samma objekt i olika ramar på samma sida . Objektets kod kommer att utföra oberoende i varje av dessa ramar . Det kommer dock att vara den kod från samma instans. Till skillnad från olika instanser av samma klass som alla har oberoende uppsättningar variabla värden , kommer var och en av dessa ramar vara verkställande av samma uppsättning av variabelvärden . Detta skapar frågan om samtidighet mellan servlet objekt .
Servlet Multitasking
server hanterar multitasking i Java servlets genom att skapa flera trådar i en enda process , inte av skapa flera processer . Detta kan vara multi - tasking som en del av servlet egentliga uppgift , eller på grund av webbutvecklare bädda samma objekt i flersidiga ramar . JRE kommer att behandla varje bildruta som en separat tråd . Dessa flera trådar från flera ramar kan överlappa och korrupta variabler när trådar ändra samma variabel samtidigt .
Concurrency Safety
p Det finns två vanliga sätt att hantera samtidighet med Java servlets . Den första är Javas standard metod för att förhindra data korruption : Låsa objekt . Dessa tillåter en tråd att bokstavligen låsa ut andra trådar från att komma åt en variabel tills det är gjort med variabeln . Det andra sättet är att alltid explicit referera variabler och värden i stället för att referera " jaget ", en term för själva objektet . Objektets exakta tillstånd kommer att skilja mellan ramarna , så koden som refererar specifika värden inte kommer att stöta på samma samtidighet fel som koden som refererar ett objekts tillstånd .