Discuss / Java / 提问

提问

Topic source

哔哗bihua

#1 Created at ... [Delete] [Delete and Lock User]

对已经运行结束的线程调用join()方法会立刻返回。

会返回什么呀?

来日_方

#2 Created at ... [Delete] [Delete and Lock User]

意思是子线程本来已经执行完了,主线程再调用 join 会立刻返回继续执行

榆木出走

#3 Created at ... [Delete] [Delete and Lock User]

可以理解为void 方法里面的return;

🌙

#4 Created at ... [Delete] [Delete and Lock User]

可以理解为,啥事也不会发生

北重重

#5 Created at ... [Delete] [Delete and Lock User]

可以这样理解:

start是一个异步的接口,

join是一个阻塞接口,若当前线程任务执行完成就返回

如果不对请帮忙指正

🌙

#6 Created at ... [Delete] [Delete and Lock User]

就是返回主线程,如果t线程在的话就到t线程了,现在t线程不在了,就回来,

立即返回,就代表没有异常

这句话的意思是,如果线程对象`t`已经执行完成(即线程执行体中的任务已经执行完毕),那么对`t`调用`join()`方法将会立刻返回,不再阻塞调用线程。

在代码中,当主线程调用`t.join()`时,主线程会等待线程`t`执行完毕,然后再继续执行自身的任务。但是,如果线程`t`在主线程调用`t.join()`之前就已经执行完毕,`join()`方法会立刻返回,而不再阻塞主线程。

这是因为`join()`方法实际上是在等待调用该方法的线程(在这里是主线程)等待目标线程(在这里是线程`t`)执行完毕。如果目标线程已经执行完毕,调用`join()`方法就会立即返回,而不会再等待。这是一个非常有用的特性,因为它允许程序在不同的时间点等待线程的完成,而不需要知道线程是否已经结束。

总体来说,`join()`方法的调用会使得当前线程等待被调用对象所表示的线程执行完毕。如果被调用对象已经执行完毕,`join()`方法会立即返回。


  • 1

Reply