在java中,以下问题的有效解决方案是什么:
我有多个线程(10-20 个左右)生成作业(“Job Creators”),以及一个能够执行它们的线程(“The worker”)。一旦工作创建者发布了工作,它应该等待工作完成,除了“它完成了”之外没有其他结果,然后再继续。
为了将作业发送到工作线程,我认为环形缓冲区或类似的标准扇入设置可能是一个好方法?但是对于一个 Job Creator 发现她的工作已经完成,我不太确定..
工作创建者可以睡觉,工作人员在完成后会打断他们。或者每个工作创建者可以有一个原子布尔值,它会检查并由工作人员设置。我不知道,这两个都不是很好。我想用尽可能少的(如果可能的话,没有)锁来做到这一点。所以要明确一点:我正在寻找的是速度,而不一定是简单性。
有没有人有什么建议?阅读有关并发策略的链接也非常受欢迎!