Ett Java -program som bara kan göra en sak i taget har betydande begränsningar i komplexiteten i de uppgifter som programmeraren kan be den att utföra . För att tillåta program att utföra flera operationer samtidigt , kan Java programmerare skapa nya processer genom att exemplifiera trådar . Trots deras användbarhet och nödvändighet i komplexa tillämpningar , trådar är inte utan begränsningar . Trådar
Java programmerare skapa trådar från en klass som implementerar " Runnable " gränssnitt . Trådarna fungerar som program inom program , eftersom de måste innehålla " run ( ) "-metoden , som beter sig som " public static void main ( ) " i programmets huvudklass . Programmeraren startar en tråd genom att skapa en ny instans av objektet , och sedan kalla sin " run "-metoden . När trådarna börja springa , kan de komma variabler och anropa metoder från andra objekt .
Prestandabegränsningar
Varje tråd som ett Java -program skapas lägger ett tillägg belastning på datorns processor. Om ett Java -program spawns flera processor intensiva trådar , då den dator där programmet fungerar kan sakta ner betydligt . Detta minskar programmets prestanda . Förutom prestanda tuning , har varje processor ett maximalt antal program trådar som det kan schemalägga handläggningstiden . Detta antal varierar från system till system , och finns i dess dokumentation .
Variabla fel
När ett program består av en enda tråd , den " public static void main ( ) "-metoden , är den dataintegritet av programvariabler inte ett problem . När ett program har flera trådar åt och ändra samma variabler , kan en variabel ändras av en annan tråd . Förändringen sker mellan den tid som den andra tråden åtkomst variabelns värde och den tid det modifierar den variabeln . När trådar utför funktioner på variabler som är beroende variabeln ursprungliga värde , kan detta leda till att data korruption .
Lås
att förhindra att data korruption , Javas standardbibliotek innehåller objekt som kallas " lås . " När en tråd anropar en variabel med avsikt att ändra det , kan tråden ringa ett lås metod som kommer att hindra andra trådar från att komma åt variabeln tills den aktuella tråden är klar med den . Efter tråden släpper sitt lås, kan nästa tråd låsa variabeln. Även om detta förhindrar att data korruption , saktar ner programmets prestanda .