ArrayBlockingQueue เทียบกับ Google Guava Non-Blocking EvictingQueue Example

เผยแพร่แล้ว: 2020-12-29
ArrayBlockingQueue เทียบกับ Google Guava Non-Blocking EvictingQueue Example

โปรแกรมอรรถประโยชน์การทำงานพร้อมกันนั้นยอดเยี่ยมมากใน Java

java.util.concurrent package มีโปรแกรมอรรถประโยชน์มากมายที่เราสามารถใช้ได้หลายวิธี

ในบทช่วยสอนนี้ เราจะพูดถึงความแตกต่างระหว่าง java.util.concurrent ArrayBlockingQueue และ com.google.common.collect EvictingQueue .

EvictingQueue คืออะไร?

EvictingQueue เป็นส่วนหนึ่งของ Google's Guava library ซึ่งเป็นคิวที่ non-blocking bounded (ขนาดคงที่) ที่จะ removes องค์ประกอบออกจากส่วน head ของคิวโดยอัตโนมัติเมื่อพยายามเพิ่มองค์ประกอบไปยัง full queue

วิธีเพิ่มไลบรารี Guava ของ Google ในโครงการ eclipse-java ของคุณ

คุณสามารถเพิ่มการพึ่งพา maven ด้านล่างให้กับไฟล์ pom.xml หากคุณใช้โปรเจ็กต์ maven ในกรณีของโปรเจ็ non-maven คุณต้องดาวน์โหลดจากที่นี่และรวมไลบรารี่ไว้ใน classpath ของโปรเจ็กต์ของคุณ

ArrayBlockingQueue คืออะไร?

เป็นการ blocking คิวที่มี bounded (ขนาดคงที่) ที่เก็บองค์ประกอบไว้ภายในอาร์เรย์ CAN'T จัดเก็บองค์ประกอบได้ unlimited จำนวน คิวนี้สั่งองค์ประกอบ FIFO (เข้าก่อนออกก่อน)

Read more : ตัวอย่างคิวซิงเกิล

มาเริ่มกันที่ Example

  1. สร้าง ArrayBlockingQueue ด้วยขนาด 10
  2. สร้าง EvictingQueue ด้วยขนาด 10
  3. ลองเพิ่ม 15 องค์ประกอบในคิว
  4. สำหรับ EvictingQueue – จะไม่เกิดข้อผิดพลาดใดๆ
  5. สำหรับ ArrayBlockingQueue – จะทำให้ Queue Full error

สร้างคลาส CrunchifyArrayBlockingQueueVsEvictingQueue.java

เพียงเรียกใช้โปรแกรม Java นี้เป็นแอปพลิเคชันใน Eclipse Console หรือ IntelliJ IDEA แล้วคุณจะเห็นผลลัพธ์เช่นนี้

ผลลัพธ์ของคอนโซล:

แจ้งให้เราทราบหากคุณประสบปัญหาในการใช้งานโปรแกรมข้างต้น