Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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
Java 有多少线程可以并行运行?_Java_Multithreading_Concurrency - Fatal编程技术网

Java 有多少线程可以并行运行?

Java 有多少线程可以并行运行?,java,multithreading,concurrency,Java,Multithreading,Concurrency,我正在学习Java中的多线程和并发。阅读大量关于堆栈溢出和联机的帖子。但是没有被清除。所以请容忍我 首先,我的疑问是,有人说可以并发运行的线程数等于(n=处理器内核数)对吗?我真的不确定这句话 但我已经读到,我们可以在JVM中创建任意多的线程,这只取决于我们分配给JVM的内存。对吗 我们应该如何决定一个java程序并行运行的线程数?它是否与处理器内核有关 可并行运行的线程数等于(n=线程数 处理器内核) 是的,这句话是真的 但我已经读到,我们可以在JVM中创建我们想要的任意多的线程 只取决于我们

我正在学习Java中的多线程和并发。阅读大量关于堆栈溢出和联机的帖子。但是没有被清除。所以请容忍我

首先,我的疑问是,有人说可以并发运行的线程数等于(n=处理器内核数)对吗?我真的不确定这句话

但我已经读到,我们可以在JVM中创建任意多的线程,这只取决于我们分配给JVM的内存。对吗

我们应该如何决定一个java程序并行运行的线程数?它是否与处理器内核有关

可并行运行的线程数等于(n=线程数 处理器内核)

是的,这句话是真的

但我已经读到,我们可以在JVM中创建我们想要的任意多的线程 只取决于我们分配给JVM的内存。对吗


理论上是的。您可以在JVM中创建所需数量的
线程
,直到获得
OutOfMemoryError
。但是创建<代码>线程< /C>是一项昂贵的任务,因此最好的做法是考虑使用一个共享的线程池来代替。这可以通过
ExecutorService
框架来实现。

@ElliottFrisch,先生,我看过那篇文章。但我很想知道,知道处理器中有多少内核可以并行运行多个线程有关系吗?或者我只需要检查JVM内存分配?这是机器上可以运行的线程数(总数)。请注意,现代操作系统也可以。Java线程被实现为本机线程。您可以创建任意多个线程,但一个内核一次只能运行一个线程。@tkausl,如果一次只能执行一个线程,那么此时还有哪些线程在执行?正在等待处理器处理?那么,如果线程类似于排队等待处理器处理,那么多线程有什么用呢?堆栈段空间也会耗尽,堆栈段会被线程分割,因此同步线程越多,每个线程的堆栈越小,从而增加堆栈溢出异常的机会(虽然对于大多数应用程序来说,它通常相当大)。现在大多数CPU都有超线程。2或4个线程,甚至8个线程都是可能的。