用於 JVM 的 Java 並發工具。該專案旨在提供 JDK 目前缺少的一些並發資料結構:
並發隊列的 SPSC/MPSC/SPMC/MPMC 變異:
SPSC/MPSC 連結陣列佇列(有界和無界)提供效能、分配和佔用空間之間的平衡
基於 MPSC/MPMC XAdd 的無界連結數組佇列為生產者提供了降低的爭用成本(使用 XADD 而不是 CAS 循環),並提供池化佇列以減少分配。
擴充的佇列介面(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 模組自述文件中找到。盡情發揮吧,請讓我們知道它在您的硬體上的表現。
mvn package
cd jctools-concurrency-test
java -jar target/concurrency-test.jar -v
實驗工作可在 jctools-experimental 模組下進行。大多數東西的開發都是為了最終將其移植到核心,在那裡它將被穩定並發布,但有些實現純粹是為了參考而保留,有些可能永遠不會畢業。小心賈伯沃克,我的孩子。
討論 JCTools 的最佳方式是在 GitHub 問題系統上。任何問題都很好,GitHub 提供了比 twitter/mailing-list/gitter 更好的知識共享平台(或至少我們是這麼認為的)。
我們已獲得 JetBrains 的 IntelliJ IDEA 許可證,以協助開發 JCTools。這是一套很棒的工具,使開發人員受益,並最終使社區受益。
這是一家很棒且鼓舞人心的公司,立即購買他們的產品!
JCTools 享有源源不絕的 PR、建議和使用者回饋。這是一個社區!感謝大家的參與!