新しい並列機能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 機能を使用してソース コードを簡単にコンパイルする方法について説明します。
基本的に、これらの JDK 8 機能をまだサポートしている IDE がないため、これは私が現在行っていることです。
以下をダウンロードします。
次に、次のディレクトリ構造を作成します。
Sanbox
|-----jdk8
|-----ant
|-----projects
次に、次の JEdit プラグインをインストールします。
次に、Apache Ant を構成します。
SET JAVA_HOME=C:\Sanbox\jdk8
JEdit Ant プラグインを構成する時間
次に、新しい Java プロジェクトを作成します。
出来上がり!この時点で、JEdit のツールバーに 4 つのボタンが表示されます。Build Application、Compile、Clean、および Run Application です。これらは build.xml ファイルに基づいており、対応する Ant タスクに従って実行されます。ラムダ式を書き始めて、新しい API を使用することができます:-)
最後の開発者プレビュー (b50) では、並列処理はまだほとんど実装されていません。別のブランチでより多くの作業を行っていることがわかります (ただし、OpenJDK8 ソースをダウンロードしてビルドする場合)。
ただし、配列のラッパーArrays.parallell
を作成するメソッドを使用することはできます。ParallelIterable
これを使用して、いくつかの並列処理機能をテストできます。
大きな配列で素数を見つける例を行いました。これを並行して実行すると、4 つのコアがすべて使用されていることを確認できました。
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>());
これは、Apache Ant 8.4.x および JDk8-b50 を使用した私の JEdit プロジェクトで正常にコンパイルおよび実行されます。
これが役立つことを願っています。
PD:
isPrime
例の単純さをあいまいにしないために、上記のコードでは述語を定義していません。誰でも簡単に素数述語を定義して、このコードを試すことができると確信しています。
NetBeansがjdk8を使用しているかどうかを確認します(疑わしいです)。そうでない場合は、組み込みのjdkではなくjdk8のローカルコピーを指すようにします。お役に立てれば。
JDK8 機能を実験的にサポートするようになった Netbeansのナイトリー バージョンを使用できます。提案された修正はまだ適切に機能していないようですが、マイナーな問題が多くあります。) Lambda 対応の JDK8 を Java プラットフォームとして追加したことを確認してから、ソース レベルを実験するプロジェクトの Java 8。
ここで、JDK の最新の Lambda 対応ビルドを取得できます。
執筆時点では、静的クラスには、、およびArrays
で実験できる3 種類の並列メソッドがあります。ただし、これは最終リリース前に変更される可能性が高いことに注意してください。現在、API は非常に流動的です。parallelStream()
parallelPrefix()
parallelSort()
私の提案は、Netbeans を脇に置き、プレーン テキスト エディターを使用して Java コードを編集し、Java 8 ツールチェーンを使用してコマンド プロンプトからコンパイルおよび実行することです。そうすれば、問題が Netbeans の問題によるものではないことを確認できます。
以下の例では、ドキュメント ディレクトリ内のすべてのディレクトリを検索します。
List<File> directories = Arrays.asList(new File("/Users/sid/Documents")
.listFiles())
.parallelStream()
.filter(t -> t.isDirectory() == true)
.collect(Collectors.toList());
Java 8 は、コレクションがオブジェクトの連続ストリームに変換されるストリーム サポートを提供します。コレクションのサイズが小さい場合は.stream()で十分です。しかし、大きなコレクションがあり、並列処理機能を活用したい場合は、.parallelStream()メソッドを使用できます。