java中sleep和join的相似之处

use*_*864 -2 java concurrency multithreading thread-sleep

正如问题所示,我想知道线程上的sleep和join方法之间的相似性.我已经经历了许多描述睡眠和连接方法之间差异的问题.但我想知道睡眠和连接方法可以互换使用的不同场景.根据我的想法,下面的代码应该以同样的方式工作.我有一个主线程,我在其中启动一个新线程(只有1),我希望主线程等待新线程完成一段时间.代码如下:

   newThread.join(10000)
Run Code Online (Sandbox Code Playgroud)

要么,

  Thread.sleep(10000)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,我没有得到预期的结果.为什么会这样?从技术上讲它应该是一样的吗?

Bor*_*der 6

不不不

sleep并且join完全不同的.

join将等待指定Thread完成(正常或异常)或直到时间到期.

sleep 将在指定时间内停止当前线程.

它们完全不同.我们明确地等待另一个Thread和唤醒瞬间即是Thread结束.sleep只是停止执行.

如果你可以保证newThread需要更长时间再10,000ms完成它们就会变得相同,但这是一个堕落的情况.

如果你想等待另一个Thread人完成使用join.

如果你想让你的电流Thread停止它正在做的事情并暂时休息一段时间sleep.