有时,Java中的主要方法似乎运行不正常。这是一个使用线程的示例。第二个线程首先执行(它们都作用于同步对象,因此第二个线程应该等到第一个线程完成,而不是先执行)。
public class Sync {
public static void main(String[] args) {
int a [] = { 1, 2, 3, 4, 5 };
MyThread mt1 = new MyThread("Child #1", a);
MyThread mt2 = new MyThread("Child #2", a);
try {
mt1.thread.join();
mt2.thread.join();
} catch(InterruptedException exc) {
System.out.println("Main thread interrupted.");
}
}
}
我首先在IDE中运行代码,所以我认为这可能是问题,但在使用命令行时我得到了相同的结果。
答案 0 :(得分:2)
我对你的问题的解释是你通过调用
来思考try {
mt1.thread.join();
mt2.thread.join();
}
在main函数中,您需要执行线程1,然后执行线程2.
然而,通过调用mt1.thread.join();在主线程中,它完成的所有操作都是暂停main函数的执行,直到mt1完成执行。这没有说明mt1是在mt2之前,之后还是同时执行。所有它可能确保主线程将首先等待mt1,然后等待mt2。