Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to customize blocking behavior of BlockingQueue

Tags:

java

queue

I want to create a blocking queue which blocks producer on the basis of customized rules instead of number of items in the queue.

For example:

Producer produces some files and puts into a queue. Consumer transfers them to a specific location after some analysis.

For above scenario, I want producer waiting to produce new files if the size of total files in the queue reaches some threshold value. Queue can accept any number of files if the total size don't cross threshold value.

like image 888
Amit Kumar Gupta Avatar asked Nov 24 '11 11:11

Amit Kumar Gupta


1 Answers

I would probably subclass a BlockingQueue such as the ArrayBlockingQueue and add a simple CountDownLatch which is initialized to the threshold value and enables the various take/remove methods when reaching 0.

like image 139
aioobe Avatar answered Oct 13 '22 08:10

aioobe