Ich verstehe nicht ganz, warum ich diese Ausgabe für diesen Code zu erhalten:Thread ausgeführt wird nicht trotz der Methode join
public class Example {
static void threadMessage(String message) {
String threadName =
Thread.currentThread().getName();
System.out.format("%s: %s%n", threadName, message);
}
private static class MessageLoop implements Runnable {
public void run() {
String importantInfo[] = {
"Line 1",
"Line 2",
"Line 3",
"Line 4"
};
try {
for (int i = 0; i< importantInfo.length; i++) {
// Pause for 4 seconds
Thread.sleep(4000);
// Print a message
threadMessage(importantInfo[i]);
}
} catch (InterruptedException e) {
;
}
}
}
public static void main(String args[]) throws InterruptedException {
threadMessage("Starting MessageLoop thread");
Thread t = new Thread(new MessageLoop());
t.start();
threadMessage("Waiting for MessageLoop thread to finish");
while (t.isAlive()) {
threadMessage("Still waiting...");
// Wait maximum of 1 second
// for MessageLoop thread
// to finish.
t.join(1000);
}
threadMessage("Finally!");
}
}
Ausgang:
main: Starting MessageLoop thread main: Waiting for MessageLoop thread to finish main: Still waiting... main: Still waiting... main: Still waiting... main: Still waiting... main: Still waiting... Thread-0: Line 1 main: Still waiting... main: Still waiting... main: Still waiting... main: Still waiting... Thread-0: Line 2 main: Still waiting... main: Still waiting... main: Still waiting... Thread-0: Line 3 main: Still waiting... main: Still waiting... main: Still waiting... main: Still waiting... Thread-0: Line 4 main: Finally!
wenn ich schreibe diese Aussage innen Die Schleife, Thread main fährt mit seiner Ausführung fort. Es ist nicht anzunehmen, dass thread main mit seiner Ausführung fortfahren soll, nachdem thread t beendet wurde?
t.join (1000);
Der Bucle setzt jedoch seine Ausführung fort. Mein Wissen gehören diese zwei Linien Haupt einzufädeln - während (t.isAlive()) - threadMessage („Ich warte immer noch ...“)
Ich versuche, ein Beispiel für diesen Link zu verstehen:
Vielen Dank im Voraus für Ihre Hilfe !!!
Was Sie nicht in der Ausgabe verstehen ? Welche Leistung würden Sie erwarten und warum? –