请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问老师, 将while循环中的判断条件修改为在中断状态下进入,main线程创建的子线程依旧能够正常运行while中的代码,但是运行速度会变的很慢

请问老师,我将while循环中的判断条件修改为在中断状态下进入,main线程创建的子线程依旧能够正常运行while中的代码,但是运行速度会变的很慢,这一点是为什么? 思考和查阅后并未得到想要的答案。

复现代码:

public class ThreadStop {

    public static void main(String[] args) {
        Thread thread = new Thread(new NormalStopThread());
        thread.start();
        thread.interrupt();
    }

    public static class NormalStopThread implements Runnable {
    
        @Override
        public void run() {
            int num = 0;
            // 去除了非条件
            while (Thread.currentThread().isInterrupted()
                    && num <= Integer.MAX_VALUE / 2) {
                if (num % 10000 == 0) {
                     System.out.println(num + "是倍数"
                            + Thread.currentThread().getName()
                            + Thread.currentThread().getState());
                }
                num++;
            }
            System.out.println("Task Completed");
        }
    }
    
}

正在回答

1回答

我运行了你的代码,速度和之前是一样的,没有变慢

0 回复 有任何疑惑可以回复我~
  • 提问者 zzHck #1
    当前系统配置为:系统:Windows 10 1903 处理器:AMD 2700X	时会出现该种情况,在同样版本JDK的情况下JDK1.8(8u191)更换平台为 系统:MacOS 10.14.3 处理器:Intel i5 运行该代码未见速度变化。可能跟系统或者硬件有关,先不深究了。谢谢老师了
    回复 有任何疑惑可以回复我~ 2020-01-03 21:33:16
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信