java如何处理多线程?线程多于进程

时间:2016-04-13 07:14:19

标签: java multithreading parallel-processing

我想知道是否有人能告诉我当你拥有比核心更多的线程时java如何处理多线程?例如,我有一个四核,但我的程序使用8个线程。

我只是在问,因为我想做一些并行编程。我想用它来提高数组的性能。

感谢您的帮助。

编辑: 为了澄清,我将使用并行编程来按核心数量来划分数组。所以我有一个约50K的数组,希望使用PP来提高性能并增加数组大小。

1 个答案:

答案 0 :(得分:4)

  

可以让我知道java如何处理多线程

它没有(除非你有绿色线程,而且大多数人都没有)。操作系统进行调度。

  

我有四核,但我的程序使用8个线程。

如果您有超线程,他们都可以立即运行。顺便说一句你可能每个CPU只有1个线程用于GC,还有许多其他线程,即使你没有自己创建。

  

我想做一些并行编程。想要用它来提高数组的性能

我建议您将忙线程数保持为您拥有的逻辑CPU数量。事实上,有一个库,可以帮助你做这样的内置,例如DoubleStream

double[] manyDoubles = ....
DoubleSummaryStatistics dss =
            DoubleStream.of(manyDouble)
                        .parallel()// do stuff in parallel using all the CPUS
                        .filter(x -> x >= 1)
                        .map(x -> x * x)
                        .summaryStatistics();