我正在尝试在“大师/工人”安排中使用Jini,但是工人的工作可能会很长时间。此外,每个工作人员都需要对该机器上的单个资源具有独占访问权。
目前,如果一个工作人员在运行前一个请求时收到另一个请求,那么新请求将在第二个线程中被接受和执行。
在当前工作完成之前,是否有任何最佳做法来确保员工不再接受其他工作?
我考虑过的事情:
当然,我很高兴地被告知,有更合适的技术比吉尼.但是我不想要太重的东西,比如到处都是EJB容器。
发布于 2012-08-02 08:10:22
您链接到的“主/工”模式显然不是您要实现的,因为它使用JavaSpace作为请求和结果的中间存储,从而使您的问题消失。
事实上,这是这种场景的标准解决方案:一个队列,“主”向其中添加请求,“工人”从队列中接收请求进行处理。
发布于 2012-05-03 22:45:16
为了回答我自己的问题,并可能为自己赢得一个“破叠交换礼仪”徽章.:
服务可以从注册表中取消导出,以防止再次请求它。
请参见:
Exporter.unexport(bool)在这种情况下,我需要传递"true“,这样取消导出就会立即发生--否则它将等待当前调用完成,从而击败本练习的对象。我可能也会同步访问整个服务器对象,以防止“同时发生两个调用”的争用。
https://softwareengineering.stackexchange.com/questions/147109
复制相似问题