Java 无法理解线程连接()

Java 无法理解线程连接(),java,multithreading,Java,Multithreading,我不熟悉多线程。关于线程,我知道以下几点: thread\u obj.join()保持线程直到其结束 thread\u obj.join(5000)保持线程5秒。然后作为其他线程运行 我知道join()。我的问题是,如果我们在join()中提供更多时间,那么sleep()就像join(5000)和sleep(1000)一样,它将运行良好,线程保持5秒。然后作为其他线程运行,但如果您在join()中提供的时间较少,则sleep()类似于join(500)和sleep(2000)将join()保

我不熟悉多线程。关于线程,我知道以下几点:

  • thread\u obj.join()
    保持线程直到其结束

  • thread\u obj.join(5000)
    保持线程5秒。然后作为其他线程运行

我知道
join()。我的问题是,如果我们在
join()
中提供更多时间,那么
sleep()
就像
join(5000)
sleep(1000)
一样,它将运行良好,线程保持5秒。然后作为其他线程运行,但如果您在
join()
中提供的时间较少,则
sleep()
类似于
join(500)
sleep(2000)
join()
保持线程直到结束

我有以下我不理解的代码
join()

公共类THRD3扩展线程{
公开募捐{

for(int i=1;i调用
线程。join
使调用线程等待线程完成执行。这意味着它将被“阻塞”通过传递参数可以指定超时,这意味着调用线程将等待线程完成,或者在超时结束时放弃


在代码中,
obj.join(500)
使主线程不执行任何操作,并等待
obj
线程完成,或等待500毫秒过去,以先发生的为准。

您的基本假设是
join()
错误地“持有”有问题的线程。
线程#join()
线程#join(长毫秒)
是同步结构,即我们使用它们来等待线程的终止

发件人:

等待此线程死亡

此方法的调用与调用的行为方式完全相同

join(0)

等待此线程死亡的时间最多为毫秒。超时0表示永远等待


@Lino的可能副本它不是一个副本,因为OP要求
线程连接(长毫秒)
,而不是
线程连接()
@Turing85那么这可能是一个更好的副本:无论哪种方式,
连接都不会停止线程。它只是等待线程完成(或超时,以先发生的为准)我知道,
join
保持线程一段时间。为此,我在我的codewell中定义了…
+1
请参阅在睡眠和join方法上更改时间后的代码输出,我在注释行中给出了该方法,并在比较两个输出后运行…您将看到差异…或任何其他线程中断当前线程,这将导致中断ptedException。在这种情况下,当前线程没有等到超时或连接线程终止。您是对的
join()
wait fot thread die和
join(5000)
在运行后给线程一个时间片作为其他线程运行…但是请运行代码,并在更改时间后打开
sleep()
join()
然后重新运行并比较这两个输出。
join(0)