I have a Producer that puts some job on a blockingQueue. The Consumer (WorkerThread) takes this jobs and process it. I have a second list (Vector) where i store all OpenJobs. now the producer should wait till all jobs are finished (The openJobs list is empty). Is there something like a blockingQueue that blocks the producer Thread till the last elemet is removed from the openjobs list? Or is there a design pattern that covers this topic?