What is an efficient strategy for multiple threads posting jobs and waiting for response from a single thread?

Posted by jakewins on Stack Overflow See other posts from Stack Overflow or by jakewins
Published on 2012-09-11T21:09:11Z Indexed on 2012/09/11 21:38 UTC
Read the original article Hit count: 239

Filed under:
|

In java, what is an efficient solution to the following problem:

I have multiple threads (10-20 or so) generating jobs ("Job Creators"), and a single thread capable of performing them ("The worker"). Once a job creator has posted a job, it should wait for the job to finish, yielding no result other than "it's done", before it keeps going.

For sending the jobs to the worker thread, I think a ring buffer or similar standard fan-in setup would perhaps be a good approach? But for a Job Creator to find out that her job has been done, I'm not so sure..

The job creators could sleep, and the worker interrupt them when done.. Or each job creator could have an atomic boolean that it checks, and that the worker sets. I dunno, neither of those feel very nice. I'd like to do it with as few (none, if possible) locks as absolutely possible. So to be clear: What I'm looking for is speed, not necessarily simplicity.

Does anyone have any suggestions? Links to reading about concurrency strategies would also be very welcome!

© Stack Overflow or respective owner

Related posts about java

Related posts about concurrency