gpt4 book ai didi

java - 非阻塞 while(true) 循环中的 wait(1) 是否比使用 wait() 和 notify() 更有效?

转载 作者:行者123 更新时间:2023-11-29 06:35:32 28 4
gpt4 key购买 nike

while(true) Java 循环与 wait(1) 一起使用比使用 wait() 的阻塞循环使用更多还是更少的资源> 和 notify()?

CPU 内核是否有一些特殊的(硬件)实现来允许 wait(1)?如果是,使用这种非阻塞循环时是否有任何限制?

一个例子:

while(true){
wait(1);
//do the job here...
}

(请注意:如果没有 wait(1),核心将在 while(true) 循环中 100% 激进...)

最佳答案

关于为什么while (true);while (true) { wait(1); 占用更多CPU 的原始问题},请考虑:现代 CPU 每秒可以执行数十亿条指令。使用 wait(1) 循环,假设它是完美的并且每次等待恰好一毫秒,您将 CPU 限制为每秒 一千条指令。没有它,就没有限制,它可以每秒数十亿次运行紧密循环。

关于哪个效率更高的新问题,while (true) { wait(1); 方法与 wait() 和被 notify()ed...

好吧,假设您正在等待一个条件。选项一:

while (true) {
wait(1);
if (condition()) {
break;
}
}

对比

wait();

和其他地方:

//code which causes condition() to be true
notify();

假设条件为真需要 10 秒。在第一种方法中,您调用 wait(1) 10,000 次并检查 condition() 10,000 次。在第二种方法中,您调用一次 wait() 和一次 notify()

关于java - 非阻塞 while(true) 循环中的 wait(1) 是否比使用 wait() 和 notify() 更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21633246/

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