I have a Producer Which produces a POJO with a property, type. There can only be two types, "A" and "B". I have a thread pool for Consumer. Whenever I receive a message of type "B" from the Producer, Before I can proceed for execution, I need to make sure that all the other threads in the pool have completed execution(For now a default Thread.sleep). And then a consumer thread should pickup the message of type "B" and run it. Till this thread is running no message can be popped from the Queue.
Example:
class POJO_Message{
String type; //This will contain the type of message "A" or "B"
}
You can use ReadWriteLock to do you work.when the message type is 'B',try acquire write lock,other type message acquire read lock.one simple code like this.
the performance of this method is not good.