Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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个内核并行运行。

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)是进程和

嗨, 我在java中使用简单的多线程时遇到问题。 当我运行这个程序时,cpu使用率突然达到100%,我的计算机崩溃,我无法停止程序。 在这里你可以看到代码。 当我取消对评论部分的评论时,一切都正常!但我需要在控制台中不打印任何内容的情况下修复此问题。
另外,我已经知道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个内核并行运行。