【发布时间】:2018-12-08 11:31:46
【问题描述】:
我是多线程的新手。关于线程,我知道以下几点:
thread_obj.join()保持线程直到它结束thread_obj.join(5000)将线程保持 5 秒。然后作为其他线程运行。
我知道join() 和join(millis) 持有线程一段时间。我的问题是,如果我们在join() 然后sleep() 像join(5000) 和sleep(1000) 提供更多时间,它将运行良好并且线程保持5 秒。然后作为其他线程运行,但如果您在 join() 中提供的时间较少,则 sleep() 之类的 join(500) 和 sleep(2000) join() 将保持线程直到结束。
我有以下我不理解的代码join()
public class THRD3 extends Thread {
public void run() {
for(int i = 1 ; i <= 10 ; i++) {
System.out.println(Thread.currentThread().getName()+" : "+i);
try {
//Thread.sleep(500);
Thread.sleep(2000);
}
catch (InterruptedException e) {e.printStackTrace();}
}
}
public static void main(String[] args) throws InterruptedException {
THRD3 obj = new THRD3();
THRD3 obj1 = new THRD3();
THRD3 obj2 = new THRD3();
obj.start();
obj.setName("Joined Thread 0");
//obj.join(2000);
obj.join(500);
obj1.start();
obj2.start();
}
}
【问题讨论】:
-
@Lino 它不是重复的,因为 OP 要求
Thread#join(long millis),而不是Threa#join()。 -
@Turing85 那么这可能是一个更好的副本:stackoverflow.com/questions/20426863/…
-
无论哪种方式,
join都不会停止线程。它只是等待它完成(或超时,以先发生者为准) -
我知道
join持有线程一段时间。为此我在我的代码中定义
标签: java multithreading