Java 中的并行性 8
我试图使用新的并行功能JDK8,但不幸的是,我无法让它工作。NetBeans 7.1 表示方法“并行”不存在。
此方法是否需要特殊导入?有没有人有演示 Java 8 并行性的示例代码?
我试图使用新的并行功能JDK8,但不幸的是,我无法让它工作。NetBeans 7.1 表示方法“并行”不存在。
此方法是否需要特殊导入?有没有人有演示 Java 8 并行性的示例代码?
我已经使用JDK8 Lambda Developer Preview几周了。以下是我为简化代码的编译和测试所做的工作:
以下指南介绍如何配置 Apache Ant 和 JEdit,以便使用 JDK 8 Lambda 表达式和 JDK 8 Lambda Developer Preview 中的新 API 功能轻松编译源代码。
这就是我所做的,到目前为止,基本上是因为还没有IDE支持这些JDK 8功能。
下载以下内容:
然后创建以下目录结构:
Sanbox
|-----jdk8
|-----ant
|-----projects
然后安装以下 JEdit 插件:
现在,配置你的 Apache Ant:
SET JAVA_HOME=C:\Sanbox\jdk8
是时候配置 JEdit Ant 插件了
然后创建一个新的 Java 项目:
瞧!此时,JEdit 将在工具栏中显示四个按钮:“构建应用程序”、“编译”、“清理”和“运行应用程序”。它们基于构建.xml文件,并根据相应的 Ant 任务执行。你很高兴,你可以开始编写lambda表达式并使用新的API:-)
在上一个开发人员预览版 (b50) 中,几乎没有实现任何参数化。我可以看到他们在一个单独的分支中做了更多的工作(如果你想下载并构建OpenJDK8源代码)。
但是,您可以使用在数组上创建包装器的方法。这可用于测试某些并行度功能。Arrays.parallell
ParallelIterable
我做了一个例子来在一个大数组中查找素数。我可以验证当我并行运行时,我的所有四个内核都被使用了。
Integer[] source = new Integer[30000000];
for(int i=0; i<source.length; i++)
source[i] = i;
ParallelIterable<Integer> allIntegers = Arrays.parallel(source).filter(isPrime);
Iterable<Integer> primes = allIntegers.into(new LinkedList<Integer>());
这在我的JEdit项目中编译并运行良好 Apache Ant 8.4.x和JDk8-b50。
我希望这有帮助。
效绩数据:
我没有在上面的代码中定义谓词,以免掩盖示例的简单性。我很确定eveyone可以很容易地定义一个primality谓词来尝试这个代码。isPrime
我的建议是将 Netbeans 放在一边,使用纯文本编辑器编辑 Java 代码,然后使用 Java 8 工具链从命令提示符编译并运行它。这样,您就可以确定您的问题不是由 Netbeans 问题引起的。