时间:2010-07-25 18:22:24

标签: java multithreading parallel-processing multicore

5 个答案:

答案 0 :(得分:41)

答案 1 :(得分:9)

答案 2 :(得分:7)

答案 3 :(得分:2)

您可以在Ateji PX中找到 新的 功能,这是Java语言的扩展,其中并行原语来自pi演算。与线程编程和所有基于线程的(任务,执行器等)完全不同。

并行性在语言层面以这种方式引入,而不是线程化提供API访问大多数硬件级概念的库,使多核编程更加简单直观。

这是一种全新的并行编程方法值得一读(免责声明:我是Ateji PX的设计师)。白皮书在这里:http://www.ateji.com/px/whitepapers/Ateji%20PX%20for%20Java%20v1.0.pdf

答案 4 :(得分:0)

是。 Java提供concurrent API以利用机器的多核处理器的优势。

您可以从运行时获取可用的处理器数量,并使用该计数通过ExecutorService中的许多API创建Executors

您也可以使用ThreadPoolExecutor API来实现相同目标。

Java 8提供了一个API:newWorkStealingPool,它使用所有可用的处理器创建ForkJoinPool。您不必将处理器计数作为参数传递。

看一下代码示例:

int processorCount = Runtime.getRuntime().availableProcessors();

ExecutorService executor1 = Executors.newFixedThreadPool(processorCount);
ExecutorService executor2 =  
                            Executors.newScheduledThreadPool(processorCount);
ExecutorService executor3 = Executors.newWorkStealingPool(); // java-8 API
ForkJoinPool forkJoinPool = new ForkJoinPool(processorCount);

看一下相关的SE问题吧执行人:

Java's Fork/Join vs ExecutorService - when to use which?