为什么操作系统要创建无限java线程
我只是好奇,写了下面的代码。 在运行代码时,控制台显示创建的线程。我注意到创建了大约32k个线程。 我的问题是,, 为什么我的windows 10操作系统挂起,也无法使用任务管理器强制停止。 既然我的机器有i7处理器,为什么操作系统不能在其他进程上运行呢? 我相信java程序创建的线程一定在其中一个进程中 我是java的初学者。 请让我知道在上述情况下内部会发生什么为什么操作系统要创建无限java线程,java,multithreading,process,Java,Multithreading,Process,我只是好奇,写了下面的代码。 在运行代码时,控制台显示创建的线程。我注意到创建了大约32k个线程。 我的问题是,, 为什么我的windows 10操作系统挂起,也无法使用任务管理器强制停止。 既然我的机器有i7处理器,为什么操作系统不能在其他进程上运行呢? 我相信java程序创建的线程一定在其中一个进程中 我是java的初学者。 请让我知道在上述情况下内部会发生什么 就java而言,它将消耗系统上所有可用的处理器和CPU线程。但是您在这里的实验中遇到的限制是操作系统级别的限制,大约是句柄可以
就java而言,它将消耗系统上所有可用的处理器和CPU线程。但是您在这里的实验中遇到的限制是操作系统级别的限制,大约是句柄可以阅读更多关于它的信息
也许你可以尝试在你的系统设置中摆弄一些东西,试图从你的实验中获得更多的见解。你可以试试这个。就java而言,它将消耗你系统上所有可用的处理器和CPU线程。但是您在这里的实验中遇到的限制是操作系统级别的限制,大约是句柄可以阅读更多关于它的信息
也许你可以尝试在你的系统设置中摆弄一些东西,试图从你的实验中获得更多的见解。你可以试试这个。你有一个while(true)循环,它不断地创建和启动工作线程。。。这实际上不是java问题,更不是编码语法问题,因为这在任何语言中都可能出现。“为什么操作系统不能在其他进程上运行?”如果您的代码没有在所有内核上消耗100%,那是因为
System.out.println()
是同步的,因此一次只有一个线程可以打印任何内容。就像32000人试图穿过一扇门。他们都在排队,或者更确切地说,他们都挤在门口等待通过。这是一个非常好的情况,java所做的,创建线程并让操作系统决定如何处理它们。您有一个while(true)循环,不断创建和启动工作线程。。。这实际上不是java问题,更不是编码语法问题,因为这在任何语言中都可能出现。“为什么操作系统不能在其他进程上运行?”如果您的代码没有在所有内核上消耗100%,那是因为System.out.println()
是同步的,因此一次只有一个线程可以打印任何内容。就像32000人试图穿过一扇门。他们都在排队,或者更确切地说,他们都挤在门口等待通过。这是一个非常好的情况,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());
}
}
}