为什么操作系统会创建无限的Java线程

时间:2017-07-06 14:16:58

标签: java multithreading process

我只是好奇并按照代码编写。 在运行代码时,控制台显示了创建的线程我注意到创建了大约32k个线程。 我的问题是, 为什么我的Windows 10操作系统被挂起,也无法与任务管理器强行停止。 由于我的机器有i7处理器,为什么操作系统无法在其他进程上运行? 我相信java程序创建的线程必须在其中一个进程中。

我是java的初学者。 请告诉我内部情况会发生什么?

package infiniteThreads;

public class Main {

    public static void main(String[] args) {
        while(true){
            Thread t = new Thread(new Work());
            t.start();
        }

    }

}
package infiniteThreads;

public class Work implements Runnable{

    @Override
    public void run() {
        while(true){
            System.out.println("inside " + Thread.currentThread().getName());
        }

    }

}

1 个答案:

答案 0 :(得分:2)

就java而言,它会占用系统上所有可用的处理器和所有CPU线程。但是,您在实验中遇到的限制是操作系统级限制,其中 句柄 可以更多地了解它here

也许您可以尝试使用系统设置摆弄一些内容,以尝试通过实验获得更多见解,然后尝试link