多线程java线程。join未按预期工作
我有以下课程
class ThreadDemo extends Thread {
private Thread t;
private String threadName;
ThreadDemo( String name) {
threadName = name;
}
public void run() {
for(int i = 5; i > 0; i--) {
System.out.println("Thread " + threadName + " Counter --- " + i );
}
try {
Thread.sleep(1000);
} catch (Exception e) {
System.out.println("Sleep issue");
}
System.out.println("Finishing run");
try {
Thread.sleep(1000);
} catch (Exception e) {
System.out.println("Sleep issue");
}
}
public void start () {
t = new Thread (this, threadName);
t.start ();
}
}
测试如下
public class Main {
public static void main(String[] args) {
ThreadDemo T1 = new ThreadDemo( "Thread - 1 ");
ThreadDemo T2 = new ThreadDemo( "Thread - 2 ");
T1.start();
T2.start();
//Let's give some time for threads to run
try {
Thread.sleep(10);
} catch (Exception e) {
System.out.println("Main sleep issue");
}
try {
T1.join();
T2.join();
} catch ( Exception e) {
System.out.println("Interrupted");
}
System.out.println("Finishing main.");
}
}
尽管我使用了T1,为什么我总是在输出中的“Finishing run”之前得到“Finishing main”。join()和T2。join()等待他们完成?起初我认为这可能是由于缓冲区延迟,所以我添加了线程。在跑步结束时睡眠(1000)以便有时间打印“Finishing run”,但这没有帮助。我猜这是由于第一次出现的线程。睡眠(1000)(当我移除它时,它工作正常),但不知道为什么
共 (0) 个答案