gpt4 book ai didi

Java事件循环, sleep "gently"

转载 作者:行者123 更新时间:2023-12-02 07:21:07 31 4
gpt4 key购买 nike

我正在做一种事件循环来处理 Java 中的多个非阻塞套接字。问题是,当我保持循环不变时,它会使用整个核心。 (例如,我有一个四核,每次启动程序时,CPU 每次都会跳到 25%。)

我知道我可以使用 Thread.sleep() 来减慢处理器的使用速度,但我想知道是否有正确的方法来做到这一点。我觉得 Thread.sleep(1) 可能会限制我的事件循环。

所以我的问题是,我该怎么做?有正确的方法吗?我应该降低线程的优先级吗?我应该使用 Thread.sleep(0, someNanosecondsAmount) 吗?

最佳答案

所有 sleep 方法将至少 sleep 1 毫秒。您可以使用更短的yield(),但通常不会放弃CPU。

如果您忙于等待一组套接字,您最终将使用整个 CPU,或者您将出现毫秒级的延迟。

更好的解决方案是使用 Selector 等待 Socket 准备好使用,或者使用每个连接一个线程来阻塞 NIO。

关于Java事件循环, sleep "gently",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14217592/

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