gpt4 book ai didi

java - 线程中的紧密持久循环是否会显着减慢其他线程的速度?

转载 作者:行者123 更新时间:2023-12-01 11:02:57 25 4
gpt4 key购买 nike

我的基本问题是,如果一个激烈的循环(不确定技术术语?标准循环? - 但是一个不产生任何结果的循环,没有调用 Thread.sleep() ) - 到目前为止就很好了与其他线程相关。

我尝试了一个示例,它似乎有效 - 尽管它输出了太多文本,以至于很难确切地知道正在做什么。但我主要关注的是是否有任何延误,而且似乎没有。

所以我只是想确认像这样的代码,不调用任何 Thread.Sleep() 是可以的,并且不会对 java 应用程序的其他线程造成不必要的延迟。

public class TestThreadStability implements Runnable {

private final String name;

public TestThreadStability(String name) {

this.name = name;
}

public static void main(String[] args) {
new Thread(new TestThreadStability("a")).start();
new Thread(new TestThreadStability("b")).start();
new Thread(new TestThreadStability("c")).start();
new Thread(new TestThreadStability("d")).start();
new Thread(new TestThreadStability("e")).start();
new Thread(new TestThreadStability("f")).start();
new Thread(new TestThreadStability("g")).start();
}

@Override
public void run() {
while(true) {
if (name.equalsIgnoreCase("a"))
while (true) {
// this is ok? it doesn't adversely affect the other threads much?
}
else System.out.println(name);
}
}

}

最佳答案

是的,如果您在单核中运行程序,则会导致延迟。

为什么你没注意到呢?线程以循环方式调度,这意味着如果有 4 个线程全速运行,每个线程将获得 25%。

如果您有 1 个全速线程和 3 个其他工作量很小的线程,则全速线程将在大部分时间工作,但将被迫屈服以允许其他线程完成其工作。

关于java - 线程中的紧密持久循环是否会显着减慢其他线程的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33203237/

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