gpt4 book ai didi

java - 如果在 "sleep"期间发生完整 GC,Thread.sleep 将如何表现?

转载 作者:行者123 更新时间:2023-12-04 02:39:19 26 4
gpt4 key购买 nike

我知道 hibernate 时间并不精确,也不像操作系统所能做到的那样精确。

假设没有其他极端因素..

我的问题是,如果一个线程开始 hibernate 10 秒,然后 GC 在 5 秒后命中(在线程 hibernate 时间的中间)并持续 10 秒,线程会立即结束 hibernate 还是会它再睡 5 秒(总共 20 秒)?

最佳答案

这取决于几个因素,但通常答案必须是 15,给予或索取(更多给予与索取)。这取决于执行 sleep 时安全点轮询的位置。在我看来,线程在执行 sleep已经处于安全点(我认为没有理由不这样做 + maaartinus 似乎也有同样的想法)。你可以阅读here为什么这很重要。

所以你的线程已经睡了 5 秒GC 启动并停止世界(据我所知,GC 线程“保护”了页面等发生“内存保护错误”,这就是 VM 执行安全点轮询的方式),因此整个应用程序停止 10 秒,但挂钟时间仍在继续。因此,睡 5 更多 秒是没有意义的;很容易确定线程已经睡够了。

关于java - 如果在 "sleep"期间发生完整 GC,Thread.sleep 将如何表现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60057484/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com