这样做有什么问题?我目前正在学习线程
thread1.start();
thread1.join();
thread2.start();
thread2.join();
编辑:我知道这是一个错误,因为它是我学习的源头。但是,消息来源没有提供关于它为什么错误的答案
在线程上使用和不使用.join有什么区别?
答案 0 :(得分:1)
没有理由启动新线程然后立即加入。 join()
将暂停当前线程,直到另一个完成。这与写作具有相同的效果:
thread1.run();
thread2.run();
作者可能意味着:
thread1.start();
thread2.start();
thread1.join();
thread2.join();
这种方式thread1
和thread2
可以同时执行。
答案 1 :(得分:0)
如果你把它放在try / catch中它不是一个错误,但是会有一个问题,为什么你想这样做并使用线程?这将等到thread1
死亡,然后开始使用thread2
。来自here的这个示例将有助于您理解join()
的概念(阅读他们非常好解释的评论):
t1.start();
//start second thread after waiting for 2 seconds or if it's dead
try {
t1.join(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
t2.start();
//start third thread only when first thread is dead
try {
t1.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
t3.start();
//let all threads finish execution before finishing main thread
try {
t1.join();
t2.join();
t3.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 2 :(得分:0)
很难判断是不是错误。这取决于你在线程thread1和thread2中做了什么以及你想要实现什么。
来自Java文档:
thread1.join();
导致当前线程暂停执行,直到thread1的线程终止。
如果您尝试同时启动两个线程,那么这是一个问题,因为线程将连续启动。