gpt4 book ai didi

java - Yield Method Purpose 允许其他高优先级线程?

转载 作者:行者123 更新时间:2023-11-29 09:50:17 24 4
gpt4 key购买 nike

我对 yield 方法的需求和用法有点困惑。首先,如果我们有两个不同优先级的线程处于可运行状态,JVM 是否给予两个线程均等的机会以循环方式执行。或者高优先级的线程将获得优先权?编辑:- 假设操作系统是 windows XP。

现在我们来看线程类的yield方法。yield 方法使当前正在执行的线程对象暂时暂停并允许其他线程(具有更高优先级或相同优先级)执行。

其中一篇文章在 http://oreilly.com/catalog/expjava/excerpt/index.html 给出, it is given at 如果在任何时候,一个优先级高于当前线程的线程变为可运行,它抢占优先级较低的线程并开始执行,这也是 yield 正在做的/

从上面的语句看来,yield 是由 JVM 自动处理的。不确定这里提供的额外 yield 方法是什么?

最佳答案

如果您有绿色线程,Thread.yield() 是必不可少的,但是自 1.1 版以来几乎每个 JDK 都使用 native 线程。

线程优先级在大多数应用程序中很少重要。

如果你有足够的空闲 CPU,每个可以运行的线程都会运行。当操作系统有空闲资源时,它没有理由不运行低优先级线程或进程。

如果您的系统在每个内核上都接近 100% 的 CPU,则操作系统必须选择每个线程或进程占用 CPU 的时间,并且它可能会优先于高优先级线程而不是低优先级线程,(许多操作系统会忽略该提示)但是其他因素也可能很重要。

然而,此优先级仅扩展到原始 CPU。这并不意味着更高优先级的线程可以获得更多的 CPU 缓存、主内存、内存带宽、文件缓存、磁盘 IO 或网络 IO。如果这些资源中的任何一个处于竞争中,那么它们都是平等的。

关于java - Yield Method Purpose 允许其他高优先级线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7351109/

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