cpu使用多线程java 公共类主{ 公共静态void main(字符串[]args){ LinkedList myThreads=新建LinkedList(); 对于(int i=0;i除非CPU的核心数超过100个左右,否则CPU将被完全占用。@SteveSmith非常感谢您提供的信息什么评论部分?另外,如果不告诉CPU睡眠,它就不会睡眠。100个线程执行无限循环…“我正在编写的程序不需要CPU睡眠”那么问题出在哪里?换句话说,启动100个线程,每一个尽可能快地进行无限循环=>除非有超过100个内核,否则CPU将被完全占用。@SteveSmith非常感谢您提供的信息,即使这些都没有帮助。CPU QND100线程中最多有4个内核并行运行,即使这样也无济于事。CPU qnd 100线程中最多有4个内核并行运行。
嗨, 我在java中使用简单的多线程时遇到问题。 当我运行这个程序时,cpu使用率突然达到100%,我的计算机崩溃,我无法停止程序。 在这里你可以看到代码。 当我取消对评论部分的评论时,一切都正常!但我需要在控制台中不打印任何内容的情况下修复此问题。cpu使用多线程java 公共类主{ 公共静态void main(字符串[]args){ LinkedList myThreads=新建LinkedList(); 对于(int i=0;i除非CPU的核心数超过100个左右,否则CPU将被完全占用。@SteveSmith非常感谢您提供的信息什么评论部分?另外,如果不告诉CPU睡眠,它就不会睡眠。100个线程执行无限循环…“我正在编写的程序不需要CPU睡眠”那么问题出在哪里?换句话说,启动100个线程,每一个尽可能快地进行无限循环=>除非有超过100个内核,否则CPU将被完全占用。@SteveSmith非常感谢您提供的信息,即使这些都没有帮助。CPU QND100线程中最多有4个内核并行运行,即使这样也无济于事。CPU qnd 100线程中最多有4个内核并行运行。,java,multithreading,cpu,Java,Multithreading,Cpu,嗨, 我在java中使用简单的多线程时遇到问题。 当我运行这个程序时,cpu使用率突然达到100%,我的计算机崩溃,我无法停止程序。 在这里你可以看到代码。 当我取消对评论部分的评论时,一切都正常!但我需要在控制台中不打印任何内容的情况下修复此问题。 另外,我已经知道case2代码块从未编译过。添加睡眠。只需在打印位置调用sleep方法。 您的CPU应该休眠几毫秒,以避免100%消耗它。 在您的情况下,控制台io充当睡眠 尝试减少线程并使用循环方法进行计算 Round robin(RR)是进程和
另外,我已经知道case2代码块从未编译过。添加睡眠。只需在打印位置调用sleep方法。 您的CPU应该休眠几毫秒,以避免100%消耗它。 在您的情况下,控制台io充当睡眠 尝试减少线程并使用循环方法进行计算 Round robin(RR)是进程和网络调度器在计算中采用的算法之一。由于通常使用该术语,时间片(也称为时间量子)以相等部分和循环顺序分配给每个进程,处理所有没有优先级的进程(也称为循环执行)。看 建议的修改:
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;
}
}
}
}
您应该调用中断方法来重新中断线程。
请参阅:添加睡眠。只需在打印位置调用sleep方法。 您的CPU应该休眠几毫秒,以避免100%消耗它。 在您的情况下,控制台io充当睡眠 尝试减少线程并使用循环方法进行计算 Round robin(RR)是进程和网络调度器在计算中采用的算法之一。由于通常使用该术语,时间片(也称为时间量子)以相等部分和循环顺序分配给每个进程,处理所有没有优先级的进程(也称为循环执行)。看 建议的修改:
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;
}
}
}
}
您应该调用中断方法来重新中断线程。
请参阅:此代码本身没有任何错误。 是你的机器不能应付你要求它做的工作量 您的代码生成了
100个
线程,这些线程将以最快的速度将某些内容打印到标准输出(代价高昂的操作,因为您必须要求操作系统这样做)。即使对于现代机器来说,这也是一项艰巨的工作
在打印出消息后,尝试自愿放弃CPU一段时间以增加睡眠
private void doSomething() {
switch (myInt) {
case 0: {
try {
sleep(100);
} catch (InterruptedException e) {
interrupt();
}
break;
}
case 2:{
System.out.println("2");
break;
}
}
}
另外,CPU的使用率
100%
。您只需使用可用的全部计算能力。这是件好事,特别是在科学计算方面。这段代码本身没有错。
是你的机器不能应付你要求它做的工作量
您的代码生成了100个
线程,这些线程将以最快的速度将某些内容打印到标准输出(代价高昂的操作,因为您必须要求操作系统这样做)。即使对于现代机器来说,这也是一项艰巨的工作
在打印出消息后,尝试自愿放弃CPU一段时间以增加睡眠
private void doSomething() {
switch (myInt) {
case 0: {
try {
sleep(100);
} catch (InterruptedException e) {
interrupt();
}
break;
}
case 2:{
System.out.println("2");
break;
}
}
}
另外,CPU的使用率
100%
。您只需使用可用的全部计算能力。这是件好事,特别是在科学计算方面。什么评论部分?另外,如果不告诉CPU睡眠,它就不会睡眠。100个线程执行无限循环…“我正在编写的程序不需要CPU睡眠”那么问题出在哪里?换句话说,启动100个线程,每一个尽可能快地执行无限循环=>除非CPU的核心数超过100个左右,否则CPU将被完全占用。@SteveSmith非常感谢您提供的信息什么评论部分?另外,如果不告诉CPU睡眠,它就不会睡眠。100个线程执行无限循环…“我正在编写的程序不需要CPU睡眠”那么问题出在哪里?换句话说,启动100个线程,每一个尽可能快地进行无限循环=>除非有超过100个内核,否则CPU将被完全占用。@SteveSmith非常感谢您提供的信息,即使这些都没有帮助。CPU QND100线程中最多有4个内核并行运行,即使这样也无济于事。CPU qnd 100线程中最多有4个内核并行运行。