答案 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问题吧执行人: