Dieses Mal werde ich erklären, wie Java-Multithreading implementiert wird. Multithreading wird verwendet, wenn Sie mehrere Prozesse gleichzeitig ausführen möchten.
Außerdem verwendet Multithreading eine Klasse namens Thread. Ich möchte eine Methode vorstellen, die häufig in der Thread-Klasse verwendet wird.
Danach wird es in den folgenden Versionen und Umgebungen erklärt.
IDE:eclipse Java-Version: 8 OS:Mac OS
Dann werde ich es sofort erklären.
Die Ordnerstruktur der diesmal erstellten Beispielquelle lautet wie folgt.
Für den Inhalt, der in diesem Beispiel implementiert werden soll, implementieren wir ein Basisprogramm, das die Hauptklasse "Main.java" startet und die Unterklassen "SubThreadA.java" und "SubThreadB.java" parallel startet. ..
Implementieren Sie zunächst die Unterklasse, die Sie dieses Mal parallel verarbeiten möchten.
Erweitern Sie zum Erstellen eines Multithread-Programms die Thread-Klasse und schreiben Sie die Ausführungsmethode in diese Klasse. Beschreiben Sie wie folgt.
Der Name der Klassenunterklasse erweitert Thread{
public void run() {
wird bearbeitet
}
}
In diesem Beispielprogramm implementieren wir ein Programm, das die folgenden Wörter in jedem Thread an die Konsole ausgibt.
SubThreadA.java → "Thread A wurde gestartet." SubThreadB.java → "Thread B wurde gestartet."
SubThreadA.java
package main;
public class SubThreadA extends Thread {
public void run() {
System.out.println("Thread A hat begonnen.");
}
}
SubThreadB.java
package main;
public class SubThreadB extends Thread {
public void run() {
System.out.println("Thread B hat begonnen.");
}
}
Implementieren Sie als Nächstes den Prozess, um den zuvor in der Hauptklasse erstellten Thread zu starten.
Bei der Implementierungsmethode wird der Prozess der Ausführungsmethode in Multithread gestartet, indem die Startmethode aus dem Objekt der zuvor erstellten Unterklasse aufgerufen wird.
Beschreiben Sie wie folgt.
public static void main(String[] args) {
Unterklassenname mt=neuer Unterklassenname();
mt.start();
}
Beschreiben wir nun den Vorgang des Aufrufs von "SubThreadA" und "SubThreadB".
main.java
package main;
public class Main {
public static void main(String[] args) {
//Erstellen eines Unterklassenobjekts, das die Thread-Klasse erbt
SubThreadA mt1 = new SubThreadA();
SubThreadB mt2 = new SubThreadB();
//Ausführung der Unterklasse
mt1.start();
mt2.start();
}
}
Klicken Sie nach Abschluss der obigen Beschreibung mit der rechten Maustaste auf Main.java> Java-Anwendung ausführen, um sie auszuführen. Es ist in Ordnung, wenn die folgenden Wörter auf dem Konsolenbildschirm ausgegeben werden.
Thread A hat begonnen.
Thread B hat begonnen.
Hier wird erklärt, wie die Schlafmethode der Thread-Klasse verwendet wird, um einen Thread für einen bestimmten Zeitraum anzuhalten.
Die Schlafmethode wird verwendet, indem die Zeit, die Sie im Argument anhalten möchten, in Millisekunden angegeben wird. (1000 Millisekunden = 1 Sekunde)
Außerdem kann bei der Sleep-Methode eine InterruptedException-Ausnahme aufgrund eines Interrupts usw. auftreten. Daher muss diese in eine try-catch-Anweisung eingeschlossen und die Ausnahme behandelt werden.
Lassen Sie uns nun "Sub Thread A" mit einer Verzögerung von 3 Sekunden ausführen.
SubThreadA.java
package main;
public class SubThreadA extends Thread {
public void run() {
try {
//3 Sekunden Schlaf
Thread.sleep(3000);
System.out.println("Thread A hat begonnen.");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Klicken Sie mit der rechten Maustaste auf Main.java> Java-Anwendung ausführen, um sie auszuführen. Es ist in Ordnung, wenn Thread A 3 Sekunden nach Thread B gestartet wird und die Wörter in der folgenden Reihenfolge auf dem Konsolenbildschirm ausgegeben werden.
Thread B hat begonnen.
Thread A hat begonnen.
Verwenden Sie die Join-Methode, wenn Sie warten möchten, bis ein anderer Thread die Verarbeitung abgeschlossen hat. Codieren Sie das Objekt .join () des Threads, das Sie auf Beendigung überwachen möchten.
Wie bei der Sleep-Methode kann auch aufgrund eines Interrupts usw. eine InterruptedException-Ausnahme auftreten. Daher muss diese in eine try-catch-Anweisung eingeschlossen und die Ausnahme behandelt werden.
Versuchen wir nun, "SubThreadB" zu verarbeiten, nachdem die Verarbeitung von "SubThreadA" abgeschlossen ist.
Main.java
package main;
public class Main {
public static void main(String[] args) {
try {
SubThreadA mt1 = new SubThreadA();
SubThreadB mt2 = new SubThreadB();
mt1.start();
mt1.join(); //Warten Sie, bis SubThreadA beendet ist
mt2.start();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
Klicken Sie mit der rechten Maustaste auf Main.java> Java-Anwendung ausführen, um sie auszuführen. Nach einer Weile wird es in der Reihenfolge der Threads A → B ausgeführt, und es ist in Ordnung, wenn die folgenden Wörter auf dem Konsolenbildschirm ausgegeben werden.
Thread A hat begonnen.
Thread B hat begonnen.
Ich habe meinen persönlichen Blog im Jahr 2020 gestartet!
Basierend auf den Kenntnissen und Erfahrungen, die wir als freiberuflicher Ingenieur gesammelt haben, planen wir, Informationen über freiberufliche Ingenieure, technische IT-Informationen, Brancheninformationen, Life-Hacks für Ingenieure und andere Inhalte zu verbreiten.
Die Anzahl der Artikel ist immer noch gering, wird jedoch wöchentlich aktualisiert. Wenn Sie also interessiert sind, wäre ich Ihnen dankbar, wenn Sie einen Blick darauf werfen könnten.
https://yacchi-engineer.com/
Recommended Posts