Übersetzung: Deutsch

# Java - Thread-Priorität

Hallo there, zukünftige Java-Zauberer! HeuteTauchen wir in die faszinierende Welt der Thread-Prioritäten in Java ein. schnallen Sie sich an, denn wir sind dabei, eine Reise zu beginnen, die Sie von Java-Neulingen zu Thread-Priority-Profis verwandelt!

Java - Thread Priority

## Was ist Thread-Priorität?

Bevor wir in die Details einsteigen, beginnen wir mit den Grundlagen. Stellen Sie sich vor, Sie sind ein Küchenchef in einer geschäftigen Küche (das ist unser Java-Programm), und Sie haben mehrere Aufgaben (unsere Threads) zu erledigen. Einige Aufgaben sind dringlicher als andere, nicht wahr? Genau das ist Thread-Priorität in Java alles darum - es ist eine Möglichkeit, der Java Virtual Machine (JVM) mitzuteilen, welche Threads wichtiger sind und mehr Aufmerksamkeit erhalten sollten.

### Die Prioritätsskala

In Java werden Thread-Prioritäten durch Zahlen von 1 bis 10 dargestellt:

  • 1 ist die niedrigste Priorität
  • 5 ist die normale Priorität (Standard)
  • 10 ist die höchste Priorität

Stellen Sie sich eine VIP-Liste in einer edlen Bar vor. Je höher die Zahl, desto wichtiger wird der Thread angesehen.

## Eingebaute Property-Konstanten der Thread-Klasse

Java bietet einige praktische Konstanten für gängige Prioritätsstufen. Nehmen wir einen Blick:

Konstante Wert Beschreibung
Thread.MIN_PRIORITY 1 Minimale Priorität
Thread.NORM_PRIORITY 5 Standard-Priorität
Thread.MAX_PRIORITY 10 Maximale Priorität

Die Verwendung dieser Konstanten macht Ihren Code lesbarer. Es ist wie die Verwendung von "VIP", "Regular" und "Economy" anstatt von Zahlen auf Ihrer Gästeliste.

## Thread-Priorität Setter- und Getter-Methoden

Nun lernen wir, wie man Thread-Prioritäten setzt und abruft:

### Thread-Priorität setzen

Um die Priorität eines Threads zu setzen, verwenden wir die Methode setPriority():

thread.setPriority(Thread.MAX_PRIORITY);

### Thread-Priorität abrufen

Um die aktuelle Priorität eines Threads zu überprüfen, verwenden wir die Methode getPriority():

int priority = thread.getPriority();

## Beispiel für Thread-Priorität in Java

Lassen Sie uns diese Kenntnisse mit einem einfachen Beispiel in die Praxis umsetzen:

public class PriorityDemo {
    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 5; i++) {
                System.out.println("Thread 1: " + i);
            }
        });

        Thread t2 = new Thread(() -> {
            for (int i = 0; i < 5; i++) {
                System.out.println("Thread 2: " + i);
            }
        });

        // Setzen von Prioritäten
        t1.setPriority(Thread.MIN_PRIORITY);
        t2.setPriority(Thread.MAX_PRIORITY);

        // Threads starten
        t1.start();
        t2.start();
    }
}

In diesem Beispiel erstellen wir zwei Threads. Thread 1 wird auf minimale Priorität gesetzt, während Thread 2 die maximale Priorität erhält. Wenn wir dieses Programm ausführen, sehen wir wahrscheinlich, dass Thread 2 seine Aufgabe vor Thread 1 beendet, obwohl er als Zweiter gestartet wird.

Behalten Sie aber im Kopf, dass die Thread-Scheduling durch Faktoren beeinflusst werden kann, die über die Priorität hinausgehen, sodass die Ergebnisse nicht immer genau so erwartet werden können. Es ist wie das geben von VIP-Tickets an Ihre Freunde - sie haben eine größere Wahrscheinlichkeit, als Erste reinzukommen, aber es ist nicht garantiert!

## Weitere Beispiele für Thread-Priorität

Lassen Sie uns ein etwas komplexeres Beispiel erkunden, um unsere Verständnis zu festigen:

public class PriorityExample implements Runnable {
    private String threadName;

    public PriorityExample(String name) {
        this.threadName = name;
    }

    public void run() {
        for (int i = 0; i < 3; i++) {
            System.out.println(threadName + " mit Priorität " + 
                               Thread.currentThread().getPriority() + 
                               " läuft");
            try {
                Thread.sleep(1000); // 1 Sekunde schlafen
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        Thread t1 = new Thread(new PriorityExample("Niedrige Priorität Thread"));
        Thread t2 = new Thread(new PriorityExample("Normale Priorität Thread"));
        Thread t3 = new Thread(new PriorityExample("Hoch Priorität Thread"));

        t1.setPriority(Thread.MIN_PRIORITY);
        // t2 Priorität ist standard, daher müssen wir sie nicht setzen
        t3.setPriority(Thread.MAX_PRIORITY);

        t1.start();
        t2.start();
        t3.start();
    }
}

In diesem Beispiel erstellen wir drei Threads mit unterschiedlichen Prioritäten. Jeder Thread gibt seinen Namen und seine Priorität drei Mal aus, mit einer Pause von einer Sekunde zwischen den Ausgaben.

Wenn Sie dieses Programm ausführen, sehen Sie möglicherweise eine Ausgabe wie diese:

Hoch Priorität Thread mit Priorität 10 läuft
Normale Priorität Thread mit Priorität 5 läuft
Niedrige Priorität Thread mit Priorität 1 läuft
Hoch Priorität Thread mit Priorität 10 läuft
Normale Priorität Thread mit Priorität 5 läuft
Niedrige Priorität Thread mit Priorität 1 läuft
Hoch Priorität Thread mit Priorität 10 läuft
Normale Priorität Thread mit Priorität 5 läuft
Niedrige Priorität Thread mit Priorität 1 läuft

Beobachten Sie, wie der Thread mit hoher Priorität tendenziell zuerst läuft, gefolgt vom Thread mit normaler Priorität und schließlich vom Thread mit niedriger Priorität. Die genaue Reihenfolge kann jedoch durch Faktoren wie Systemlast und die spezifischen Implementierungen der JVM variieren.

## Schlussfolgerung

Und da haben Sie es, Freunde! Sie haben gerade Ihre Java-Fähigkeiten aufgestockt, indem Sie Thread-Prioritäten meisterten. Behalten Sie im Kopf, dass Thread-Prioritäten ein nützliches Werkzeug sind, aber keine Zauberwunder. Die JVM entscheidet letztendlich, wie Threads geplant werden, und Prioritäten sind nur ein Faktor, den sie berücksichtigt.

Die Verwendung von Thread-Prioritäten ist wie ein guter Partygastgeber zu sein - Sie können vorschlagen, wer zuerst Aufmerksamkeit erhalten sollte, aber Sie können nicht vollständig kontrollieren, wie sich Ihre Gäste untereinander verhalten. Nutzen Sie Prioritäten weise, und Ihre Java-Programme werden laufen glatter als eine gut gefettete Maschine!

Fahren Sie fort zu coden, weiterzulernen und sich zu erinnern - in der Welt von Java zählt jeder Thread!

Credits: Image by storyset