أدوات التزامن في Java لـ JVM. يهدف هذا المشروع إلى تقديم بعض هياكل البيانات المتزامنة المفقودة حاليًا من 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 موجودًا و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 التجريبية. يتم تطوير معظم الأشياء بهدف نقلها في النهاية إلى المركز حيث سيتم تثبيتها وإصدارها، ولكن يتم الاحتفاظ ببعض التطبيقات كمرجع فقط وقد لا يتم تخرج بعضها أبدًا. احذر الجابرووك يا طفلي.
أفضل طريقة لمناقشة JCTools هي على نظام قضايا GitHub. أي سؤال جيد، ويوفر GitHub منصة أفضل لمشاركة المعرفة من twitter/mailing-list/gitter (أو على الأقل هذا ما نعتقده).
لقد حصلنا على تراخيص IntelliJ IDEA من JetBrains للمساعدة في تطوير JCTools. إنها مجموعة رائعة من الأدوات التي أفادت المطورين والمجتمع في نهاية المطاف.
إنها شركة رائعة وملهمة، اشتري منتجاتها الآن!!!
تمتعت JCTools بتدفق مستمر من العلاقات العامة والاقتراحات وتعليقات المستخدمين. إنه مجتمع! شكرا لكم جميعا على المشاركة!