ArrayBlockingQueue مقابل. مثال على Google Guava Non-Blocking Quueue

نشرت: 2020-12-29
ArrayBlockingQueue مقابل. مثال على Google Guava Non-Blocking Quueue

تعد أدوات التزامن رائعة جدًا في Java.

تحتوي الحزمة java.util.concurrent على الكثير من الأدوات المساعدة التي يمكننا استخدامها بعدد من الطرق المختلفة.

في هذا البرنامج التعليمي سوف نتطرق إلى الفرق بين java.util.concurrent. ArrayBlockingQueue و com.google.common.collect. EvictingQueue .

ما هو طرد الصف؟

EvictingQueue هو جزء من Google's Guava library . وهو عبارة عن قائمة انتظار (حجم ثابت) non-blocking محظورة bounded والتي removes العناصر تلقائيًا من head قائمة الانتظار عند محاولة إضافة عناصر إلى full queue .

كيف تضيف مكتبة Google Guava إلى مشروع eclipse-java الخاص بك؟

يمكنك إضافة تبعية maven أدناه إلى ملف pom.xml إذا كنت تستخدم مشروع maven. في حالة وجود مشروع non-maven - يجب عليك تنزيله من هنا وتضمين مكتبة في مسار الفصل الخاص بمشروعك.

ما هو ArrayBlockingQueue؟

إنها قائمة انتظار bounded blocking حجم ثابت) تخزن العناصر داخليًا في مصفوفة. CAN'T تخزين كميات unlimited من العناصر. أوامر قائمة الانتظار هذه عناصر FIFO (الوارد أولاً يصرف أولاً).

Read more : مثال قائمة انتظار Singleton

لنبدأ على سبيل المثال

  1. قم بإنشاء ArrayBlockingQueue بحجم 10
  2. إنشاء قائمة انتظار بحجم 10
  3. حاول إضافة 15 عنصرًا إلى قائمة الانتظار
  4. بالنسبة لـ EvictingQueue - لن ينتج عن ذلك أي خطأ
  5. بالنسبة إلى ArrayBlockingQueue - سيؤدي إلى ظهور خطأ Queue Full

قم بإنشاء فئة CrunchifyArrayBlockingQueueVsEvictingQueue.java

ما عليك سوى تشغيل برنامج Java هذا كتطبيق في Eclipse Console أو IntelliJ IDEA وسترى نتيجة مثل هذه.

نتيجة وحدة التحكم:

اسمحوا لي أن أعرف إذا كنت تواجه أي مشكلة في تشغيل البرنامج أعلاه.