Heim  >  Artikel  >  Java  >  Java-Thread-Priorität

Java-Thread-Priorität

WBOY
WBOYOriginal
2024-08-30 16:02:56340Durchsuche

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.

Variablen der Java-Thread-Priorität

Es gibt drei Hauptvariablen, die in JAVA in Form von Makros vorgespeichert sind, die unten erläutert werden-

  • Public Static int MIN_PRIORITY: Dies ist eine statische Variable mit einem Zugriffsmodifikator vom Typ „public“. Dieser Variablen wird der Wert 1 zugewiesen. Dadurch wird ein Thread mit der niedrigsten Priorität zugewiesen.
  • Public Static int NORM_PRIORITY: Dies ist eine statische Variable mit einem Zugriffsmodifikator vom Typ „public“. Dieser Variablen wird der Wert 5 zugewiesen. Damit wird ein Thread mit normaler Priorität zugewiesen. Es handelt sich um eine Standardpriorität, wenn die Priorität nicht explizit vom Entwickler zugewiesen wird.
  • Public Static int MAX_PRIORITY: Dies ist eine statische Variable mit einem Zugriffsmodifikator vom Typ „public“. Dieser Variablen wird der Wert 10 zugewiesen. Damit wird ein Thread mit der höchsten Priorität zugewiesen.

Einige Funktionen im Zusammenhang mit dem Abrufen und Festlegen der Priorität sind:

  • Public Final int getPriority (): Diese Funktion wird verwendet, um die Priorität jedes angeforderten Threads abzurufen. Diese Funktion gibt eine Ganzzahl zurück, da ihr Rückgabetyp „int“ ist. Die Ganzzahl kann zwischen 1 und 10 liegen. Die Funktion ist öffentlich und endgültig.
  • Public Final void setPriority (int newPriority): Diese Funktion wird verwendet, um die Priorität jedes angeforderten Threads festzulegen. Diese Funktion verwendet eine Ganzzahl als Parameter und diese wird im Parameterprototyp in der Funktionsdefinition erwähnt. Der Parameter Integer kann zwischen 1 und 10 liegen. Die Funktion ist öffentlich und endgültig.

Beispiele für Java-Thread-Priorität

Im Folgenden finden Sie Beispiele für die Java-Thread-Priorität:

Beispiel #1

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:

Java-Thread-Priorität

Beispiel #2

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:

Java-Thread-Priorität

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)

Vorteile der Java-Thread-Priorität

Mit Multithreading und der Zuweisung der Priorität an Threads sind viele Vorteile verbunden, die unten aufgeführt sind:

  • Es ermöglicht die gleichzeitige Ausführung mehrerer Vorgänge im System, zusammen mit der Priorität des Threads. Der Benutzer surft beispielsweise im Internet, unterbricht jedoch plötzlich das System, da neue Software installiert wurde. In diesem Fall hat der Neustart des Systems Vorrang vor dem Surfen im Internet.
  • Der JAVA-Thread erbt seine Priorität vom übergeordneten Thread, wenn der Programmierer die Thread-Priorität nicht explizit definiert. Die Beibehaltung der Priorität erfolgt unter Umgehung der Priorität in den Downstream-Threads und unter Beibehaltung der Symmetrie. Es erleichtert Programmierern das Debuggen des Programms.
  • Es macht einen Code einfacher und somit leichter zu pflegen.
  • Es erleichtert die Arbeit des Kontextwechsels erheblich, indem Prioritäten zugewiesen werden.

Fazit

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn