Alat Konkurensi Java untuk JVM. Proyek ini bertujuan untuk menawarkan beberapa struktur data bersamaan yang saat ini hilang dari JDK:
Variasi SPSC/MPSC/SPMC/MPMC untuk antrian serentak:
Antrean array tertaut SPSC/MPSC (berbatas dan tidak terbatas) menawarkan keseimbangan antara kinerja, alokasi, dan jejak
Antrean array tertaut tak terbatas berbasis MPSC/MPMC XAdd menawarkan pengurangan biaya perselisihan bagi produsen (menggunakan XADD alih-alih loop CAS), dan mengumpulkan potongan antrean untuk mengurangi alokasi.
Antarmuka antrian yang diperluas (MessagePassingQueue):
Banyak antrean tersedia dalam variasi Unsafe
(default, menggunakan sun.mic.Unsafe
) dan Atomic
(mengandalkan AtomicFieldUpdater
), serta Unpadded
(menurunkan jejak dengan menghapus berbagi palsu menghindari padding bidang).
Masih banyak lagi yang akan datang dan kontribusi/saran sangat diharapkan. JCTools mendapat dukungan dari komunitas dan kontribusi dalam bentuk isu/tes/dokumentasi/kode telah membantunya berkembang. JCTools menawarkan kinerja luar biasa dengan harga wajar (GRATIS! di bawah Lisensi Apache 2.0). Ini stabil dan digunakan oleh kerangka kerja terkemuka seperti Netty, RxJava, dan lainnya. JCTools juga digunakan oleh produk komersial untuk hasil yang luar biasa.
Tambahkan versi terbaru sebagai ketergantungan menggunakan Maven:
< dependency >
< groupId >org.jctools</ groupId >
< artifactId >jctools-core</ artifactId >
< version >4.0.3</ version >
</ dependency >
Atau gunakan versi https://jitpack.io/ yang luar biasa, dibuat dari sumber, Anda perlu menambahkan repositori Jitpack:
< repository >
< id >jitpack.io</ id >
< url >https://jitpack.io</ url >
</ repository >
Dan atur ketergantungan berikut:
< dependency >
< groupId >com.github.JCTools.JCTools</ groupId >
< artifactId >jctools-core</ artifactId >
< version >v4.0.3</ version >
</ dependency >
Anda juga dapat bergantung pada snapshot terbaru dari repositori ini (langsung di edge) dengan mengatur versi ke '4.0.5-SNAPSHOT'.
JCTools dibuat oleh maven dan memerlukan instalasi Maven dan JDK8 yang sudah ada (hanya untuk build, runtime sesuai dengan 1.6).
Dengan 'MAVEN_HOME/bin' di jalur dan JDK8 disetel ke 'JAVA_HOME', Anda seharusnya dapat menjalankan "mvn install" dari direktori ini.
Meskipun Anda bebas menyalin & memperluas JCTools, kami lebih suka jika Anda memiliki ketergantungan berversi pada JCTools untuk memungkinkan dukungan yang lebih baik, jalur peningkatan, dan diskusi. Plugin shade untuk Maven/Gradle adalah cara yang lebih disukai untuk menggabungkan JCTools dengan perpustakaan Anda. Contohnya tersedia di proyek ShadeJCToolsSamples.
JCTools diukur menggunakan benchmark JMH dan handrolled harness. Tolok ukur dan instruksi terkait dapat ditemukan di modul jctools-benchmarks README. Bersikaplah liar dan beri tahu kami bagaimana kinerjanya pada perangkat keras Anda.
mvn package
cd jctools-concurrency-test
java -jar target/concurrency-test.jar -v
Pekerjaan eksperimental tersedia di modul jctools-experimental. Sebagian besar hal dikembangkan dengan tujuan untuk akhirnya dipindahkan ke inti di mana ia akan distabilkan dan dirilis, namun beberapa implementasi disimpan murni untuk referensi dan beberapa mungkin tidak pernah lulus. Hati-hati dengan Jabberwock, anakku.
Cara terbaik untuk mendiskusikan JCTools adalah melalui sistem masalah GitHub. Pertanyaan apa pun bagus, dan GitHub menyediakan platform yang lebih baik untuk berbagi pengetahuan daripada twitter/mailing-list/gitter (atau setidaknya itulah yang kami pikirkan).
Kami dengan baik hati telah diberikan lisensi IntelliJ IDEA oleh JetBrains untuk membantu pengembangan JCTools. Ini adalah seperangkat alat hebat yang telah memberikan manfaat bagi para pengembang dan pada akhirnya komunitas.
Ini adalah perusahaan yang luar biasa dan menginspirasi, BELI PRODUK MEREKA SEKARANG!!!
JCTools telah menikmati aliran PR, saran, dan umpan balik pengguna yang stabil. Itu adalah komunitas! Terima kasih semuanya telah terlibat!