Heim >Java >javaLernprogramm >Java-Thread-Priorität
Thread wird als „kleinste Verarbeitungseinheit“ bezeichnet und ist ein leichter Unterprozess, dem einige Aufgaben zugewiesen werden, die ausgeführt werden müssen. Threads teilen sich denselben ihnen zugewiesenen Speichersteckplatz und sind unabhängig voneinander, wodurch Multitasking gefördert wird. Wenn jedoch mehrere Threads auf dem gemeinsam genutzten Speichersteckplatz ausgeführt werden, kommt es zwangsläufig zu einem Wettbewerb um die Ressource. Um diese Konkurrenz zu vermeiden und einen hohen Durchsatz zu erreichen, wurde ein Konzept zur Priorisierung von Threads eingeführt. Es ist von großer Bedeutung, wenn mehrere Aufgaben auf demselben System ausgeführt werden. Der „Thread-Scheduler übernimmt die Aufgabe, auszuführende Threads entsprechend der Priorität zuzuweisen“.
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
JVM (JAVA Virtual Machine) trifft die Entscheidung über die Priorisierung von Threads standardmäßig oder explizit durch den Programmierer. Der Prioritätsgrad liegt zwischen 1 und 10, wobei 10 zugewiesen wird, wenn wir dem Thread die höchste Priorität geben möchten. Kontextwechseländerungen helfen beim Übergang von Thread 1 zu Thread 2 usw. gemäß der Prioritätsreihenfolge.
Hinweis: Es besteht die Möglichkeit, dass zwei oder mehr Threads die gleiche Priorität zugewiesen werden, dann hängt ihre Ausführung vom Betriebssystem ab. Windows verwendet beispielsweise einen Round-Robin-Algorithmus, um diesen Fall zu behandeln.Es gibt drei Hauptvariablen, die in JAVA in Form von Makros vorgespeichert sind, die unten erläutert werden-
Einige Funktionen im Zusammenhang mit dem Abrufen und Festlegen der Priorität sind:
Im Folgenden finden Sie Beispiele für die Java-Thread-Priorität:
Im Folgenden finden Sie einige Beispiele, die das Thread-Prioritätskonzept unter Verwendung der oben bereits definierten Variablen und vorgefertigten Funktionen veranschaulichen, die in JAVA verfügbar sind.
Code:
public class test extends Thread{ public void run (){ System.out.println ( "The name of thread running curremtly is :"+Thread.currentThread ().getName ()); System.out.println ( "The priority od thread running currently is:"+Thread.currentThread ().getPriority ()); } public static void main (String args[]){ test t1=new test (); test t2=new test (); test t3=new test (); t1.setPriority (Thread.MIN_PRIORITY); t2.setPriority (Thread.MAX_PRIORITY); t3.setPriority (Thread.NORM_PRIORITY); t1.start (); t2.start (); t3.start (); } }
Ausgabe:
Unten finden Sie ein Beispiel für die Definition und das Drucken benutzerdefinierter Prioritäten.
Code:
public class test2 extends Thread { public void run () { System.out.println ( " The control is under run function now..."); } public static void main (String args[]) { // Here we are creating threads using the constructors. test2 t1=new test2 (); test2 t2=new test2 (); // setpriority () function is used below along with the parameter to set the prioirity. t1.setPriority (2); t2.setPriority (9); // Here we are coding on how to display output strings. System.out.println ( " The priority assigned to thread t1 is: " + t1.getPriority ()); System.out.println ( "The priority assigned to thread t2 is: " + t2.getPriority ()); // the run () function is defined above will be called via start () function and print the strinf which is there in it. t1.start (); } }
Ausgabe:
Hinweis: Die Priorität sollte unbedingt im Bereich von 1 bis 10 liegen. Falls die Priorität außerhalb dieses Bereichs liegt, gibt der Compiler den folgenden Fehler aus. Ich habe diesen Fehler erhalten, als 13 anstelle von 9 eine Priorität zugewiesen wurde, während ich mithilfe der Funktion setPriority () eine Priorität von Thread t2 festlegte.Ausnahme:
Ausnahme im Thread „main“ java.lang.IllegalArgumentException
unter java.base/java.lang.Thread.setPriority (Thread.java:1141)
bei test2.main (test2.java:14)
Mit Multithreading und der Zuweisung der Priorität an Threads sind viele Vorteile verbunden, die unten aufgeführt sind:
Dies ist eine der am weitesten verbreiteten und effizientesten Möglichkeiten, mehrere Aufgaben im selben System auszuführen. Da Threads den Speicher gemeinsam nutzen, ist dies auch eine speichereffiziente Methode. Wir können mehrere Threads im System ausführen, aber das kann den Prozessor verwirren, welchen er zuerst auswählen soll. Dieses Problem wurde mithilfe der Zuweisung von Prioritäten zum Thread gelöst. Der Thread läuft weiter, bis er beendet ist oder von einem Thread mit höherer Priorität unterbrochen wird. Diese Funktionalität arbeitet eng mit dem Betriebssystem zusammen. Das Vorbereiten von Word-Dokumenten und das Surfen im Internet mit Musik waren bis zum Aufkommen des magischen Konzepts des Multithreadings nicht so effizient.
Das obige ist der detaillierte Inhalt vonJava-Thread-Priorität. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!