เครื่องมือ Java Concurrency สำหรับ JVM โครงการนี้มีจุดมุ่งหมายเพื่อเสนอโครงสร้างข้อมูลที่เกิดขึ้นพร้อมกันบางส่วนที่ขาดหายไปจาก JDK:
รูปแบบ SPSC/MPSC/SPMC/MPMC สำหรับคิวที่เกิดขึ้นพร้อมกัน:
คิวอาเรย์ที่เชื่อมโยง SPSC/MPSC (มีขอบเขตและไม่มีขอบเขต) ให้ความสมดุลระหว่างประสิทธิภาพ การจัดสรร และรอยเท้า
คิวอาร์เรย์ที่เชื่อมโยงแบบไม่จำกัดของ MPSC/MPMC XAdd ช่วยลดค่าใช้จ่ายในการโต้แย้งสำหรับผู้ผลิต (โดยใช้ XADD แทน CAS loop) และรวมกลุ่มคิวเพื่อลดการจัดสรร
อินเทอร์เฟซคิวแบบขยาย (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 >
คุณยังสามารถพึ่งพาสแน็ปช็อตล่าสุดจากพื้นที่เก็บข้อมูลนี้ (ใช้งานจริงบน Edge) ได้ด้วยการตั้งค่าเวอร์ชันเป็น '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 เนื้อหาส่วนใหญ่ได้รับการพัฒนาโดยคำนึงถึงการย้ายไปยังแกนหลักในที่สุด ซึ่งจะมีความเสถียรและปล่อยออกมา แต่การใช้งานบางอย่างจะถูกเก็บไว้เพื่อใช้อ้างอิงเท่านั้น และบางส่วนอาจไม่มีวันสำเร็จการศึกษา ระวัง Jabberwock ด้วยนะลูก
วิธีที่ดีที่สุดในการหารือเกี่ยวกับ JCTools อยู่ที่ระบบปัญหา GitHub หากมีคำถามใดๆ ก็ดี และ GitHub ก็มีแพลตฟอร์มสำหรับการแบ่งปันความรู้ที่ดีกว่า twitter/mailing-list/gitter (หรืออย่างน้อยนั่นคือสิ่งที่เราคิด)
เราได้รับใบอนุญาต IntelliJ IDEA จาก JetBrains เพื่อช่วยในการพัฒนา JCTools เป็นชุดเครื่องมือที่ยอดเยี่ยมซึ่งเป็นประโยชน์ต่อนักพัฒนาและชุมชนในท้ายที่สุด
เป็นบริษัทที่ยอดเยี่ยมและสร้างแรงบันดาล ใจ ซื้อผลิตภัณฑ์ทันที!!!
JCTools ได้รับการประชาสัมพันธ์ คำแนะนำ และคำติชมจากผู้ใช้อย่างต่อเนื่อง มันเป็นชุมชน! ขอขอบคุณทุกท่านที่มีส่วนร่วม!