【发布时间】:2018-02-17 06:37:50
【问题描述】:
我想知道 join(long millis) 对 sleep(long millis) 的使用,因为它们都会暂停该线程一段时间。
所以如果被另一个线程加入的线程在这段时间之后仍然会被调用,即使加入的线程完成与否。那为什么要用milli的join而不是milli的sleep呢。
虽然,我收到了这个问题的答案,只是想清楚地解释这个问题。
谢谢,
【问题讨论】:
-
请阅读文档,这两种方法做的事情完全不同。
-
The difference is clearly explained in the Javadoc。如果您感到困惑,请edit您的问题描述您的困惑。
-
是的,先生,我明白你的意思,但正如文档中所述。两者都在一段时间内停止线程。我知道在加入的情况下,它会等待加入的线程在这段时间内死亡。但是通过使用 sleep 我们也可以让一个线程等待那个特定的时间。那么,如果我们不依赖该线程来完成其工作,那么为什么要使用毫秒连接。
-
因为 if 另一个线程完成得更快,那么您就不必等待一些额外的时间,在此期间您应该继续工作。
-
我认为您问错了问题:IMO,您应该将
t.join()和t.join(n)视为 one 函数,可以在有或没有可选超时参数的情况下调用.然后问,“为什么有人想要带有超时参数的版本?”
标签: java multithreading