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/