gpt4 book ai didi

java - cpu使用多线程java

转载 作者:行者123 更新时间:2023-11-29 07:29:25 25 4
gpt4 key购买 nike

public class Main {
public static void main(String[] args) {
LinkedList<Th> myThreads = new LinkedList<>();

for (int i = 0; i < 100; i++) {
myThreads.add(new Th());
myThreads.get(i).start();
}
}
}

public class Th extends Thread {

int myInt;

@Override
public void run() {
while(true) {
doSomething();
}
}

private void doSomething() {
switch (myInt) {
case 0: {
// System.out.println("comment part");
break;
}
case 2:{
System.out.println("2");
break;
}
}
}
}

你好,我在 java 中使用简单的多线程时遇到问题。当我运行这个程序时,cpu 使用率突然达到 100%,我的电脑崩溃了,我无法停止该程序。在这里你可以看到代码。当我取消评论评论部分时,一切正常!但我需要在不在控制台中打印任何内容的情况下解决这个问题。附言。我已经知道案例 2 代码块永远不会被编译。

最佳答案

这段代码本身并没有错。是您的机器无法处理您要求它完成的工作量。

您的代码生成 100 个线程,这些线程会将一些内容打印到标准输出(成本高昂的操作,因为您必须要求操作系统执行此操作)尽可能快 .即使对于现代机器来说,这也是一项大量工作。

打印完消息后,尝试主动放弃 CPU 一段时间,然后再 hibernate 。

switch (myInt) {
case 0: {
System.out.println("message");
Thread.sleep(50);
break;
}

另外,100%使用 CPU 并没有错。您只是在使用所有可用的计算能力。这是一件好事,尤其是在科学计算方面。

关于java - cpu使用多线程java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45079583/

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