JVM 用の Java 同時実行ツール。このプロジェクトは、現在 JDK にないいくつかの同時データ構造を提供することを目的としています。
同時キューの SPSC/MPSC/SPMC/MPMC のバリエーション:
SPSC/MPSC リンク アレイ キュー (制限付きおよび制限なし) は、パフォーマンス、割り当て、およびフットプリントのバランスを提供します。
MPSC/MPMC XAdd ベースの無制限リンク アレイ キューは、プロデューサーの競合コストを削減し (CAS ループの代わりに XADD を使用)、プールされたキュー チャンクにより割り当てを削減します。
拡張されたキュー インターフェイス (MessagePassingQueue):
多くのキューは、 Unsafe
(デフォルト、 sun.mic.Unsafe
を使用) とAtomic
( AtomicFieldUpdater
に依存) の両方のバリエーション、およびUnpadded
(フィールド パディングを回避する偽共有を削除することでフットプリントを削減) で使用できます。
今後もさらに多くの機能が予定されており、貢献や提案を大歓迎です。 JCTools はコミュニティからのサポートを受けており、問題、テスト、ドキュメント、コードの形での貢献が成長に貢献してきました。 JCTools は、手頃な価格で優れたパフォーマンスを提供します (無料! Apache 2.0 ライセンスに基づく)。これは安定しており、Netty、RxJava などの著名なフレームワークで使用されています。 JCTools は商用製品でも使用され、優れた結果をもたらしています。
Maven を使用して、最新バージョンを依存関係として追加します。
< dependency >
< groupId >org.jctools</ groupId >
< artifactId >jctools-core</ artifactId >
< version >4.0.3</ version >
</ dependency >
または、ソースから構築された素晴らしい https://jitpack.io/ バージョンを使用するには、Jitpack リポジトリを追加する必要があります。
< repository >
< id >jitpack.io</ id >
< url >https://jitpack.io</ url >
</ repository >
そして、次の依存関係を設定します。
< dependency >
< groupId >com.github.JCTools.JCTools</ groupId >
< artifactId >jctools-core</ artifactId >
< version >v4.0.3</ version >
</ dependency >
バージョンを「4.0.5-SNAPSHOT」に設定することで、このリポジトリからの最新のスナップショット (エッジ上でライブ) に依存することもできます。
JCTools は Maven でビルドされ、既存の Maven インストールと JDK8 が必要です (ビルドのみ、ランタイムは 1.6 準拠)。
パス上に「MAVEN_HOME/bin」があり、JDK8 が「JAVA_HOME」に設定されている場合、このディレクトリから「mvn install」を実行できるはずです。
JCTools を自由にコピーして拡張することはできますが、より良いサポート、アップグレード パス、ディスカッションを可能にするために、JCTools へのバージョン管理された依存関係があることを強く推奨します。 Maven/Gradle のシェード プラグインは、JCTools をライブラリと融合させるための推奨される方法です。サンプルは、ShadeJCToolsSamples プロジェクトで入手できます。
JCTools は、JMH ベンチマークとハンドロール ハーネスの両方を使用してベンチマークが行われます。ベンチマークと関連手順は、jctools-benchmarks モジュールの README にあります。ぜひ、あなたのハードウェアでどうだったか教えてください。
mvn package
cd jctools-concurrency-test
java -jar target/concurrency-test.jar -v
実験的な作業は jctools-experimental モジュールで利用できます。ほとんどのものは、最終的に安定化してリリースされるコアに移植することを目的として開発されていますが、一部の実装は純粋に参照用に保持されており、一部は決して卒業しない可能性があります。ジャバウォックに気をつけろ、我が子よ。
JCTools について議論する最良の方法は、GitHub の問題システムを使用することです。どのような質問でも構いません。GitHub は、twitter/メーリングリスト/gitter よりも優れた知識共有プラットフォームを提供します (少なくとも私たちはそう考えています)。
私たちは、JetBrains より、JCTools の開発を支援する IntelliJ IDEA ライセンスをご提供いただきました。これは開発者、そして最終的にはコミュニティに利益をもたらす素晴らしいツールスイートです。
素晴らしい、刺激的な会社です。今すぐ製品を購入してください。
JCTools には、PR、提案、ユーザーからのフィードバックが着実に寄せられています。それはコミュニティです!参加してくださった皆様、ありがとうございました!