我的基本问题是,如果一个激烈的循环(不确定技术术语?标准循环? - 但是一个不产生任何东西的循环,没有调用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);
}
}
}
答案 0 :(得分:1)
是的,如果您在一个核心中运行程序,它将导致延迟。
为什么你没有注意到它?线程按循环计划,这意味着如果有4个线程以全速运行,则每个线程获得25%。
如果你有1个全速线程和3个其他非常少工作的线程,那么全速线程大部分时间都会工作,但是会被迫屈服以允许其他线程完成它们的工作。