anlamıyorum yöntemiyle rağmen katılmak yürütme değildir:Konu bu kodu için bu çıktıyı almak Oldukça neden
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!");
}
}
Çıktı:
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!
içimde bu açıklamayı yazarsanız döngü, iş parçacığı ana yürütme ile devam eder. Bu iş parçacığının, iş parçacığı bittikten sonra yürütmeye devam etmesi gerekmiyor mu?
t.join (1000); Bununla birlikte, bucle çalışmasını sürdürmektedir. iken (t.isAlive()) - - Bildiğim kadarıyla bu 2 satır ana iplik aittir threadMessage ("Hala bekliyor ...")
Bu bağlantıyı bir örneğini anlamaya çalışıyorum:
Yardımlarınız için şimdiden teşekkür ederiz!
? Hangi çıktıyı beklerdiniz ve neden? –