首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在长时间调用期间独占使用Jini服务器

在长时间调用期间独占使用Jini服务器
EN

Software Engineering用户
提问于 2012-05-02 21:05:17
回答 2查看 187关注 0票数 1

我正在尝试在“大师/工人”安排中使用Jini,但是工人的工作可能会很长时间。此外,每个工作人员都需要对该机器上的单个资源具有独占访问权。

目前,如果一个工作人员在运行前一个请求时收到另一个请求,那么新请求将在第二个线程中被接受和执行。

在当前工作完成之前,是否有任何最佳做法来确保员工不再接受其他工作?

我考虑过的事情:

  • 将服务器上的作业与单例资源上的锁同步。这是可行的,但远非理想。来自Master的调用将阻塞,直到当前工作线程完成,即使其他工作人员在此期间获得自由
  • 在作业运行时,从注册表中注销员工,然后在作业完成时重新注册。可能没问题,但这个想法有点不对劲……

当然,我很高兴地被告知,有更合适的技术比吉尼.但是我不想要太重的东西,比如到处都是EJB容器。

EN

回答 2

Software Engineering用户

发布于 2012-08-02 08:10:22

您链接到的“主/工”模式显然不是您要实现的,因为它使用JavaSpace作为请求和结果的中间存储,从而使您的问题消失。

事实上,这是这种场景的标准解决方案:一个队列,“主”向其中添加请求,“工人”从队列中接收请求进行处理。

票数 1
EN

Software Engineering用户

发布于 2012-05-03 22:45:16

为了回答我自己的问题,并可能为自己赢得一个“破叠交换礼仪”徽章.:

服务可以从注册表中取消导出,以防止再次请求它。

请参见:

代码语言:javascript
复制
Exporter.unexport(bool)

在这种情况下,我需要传递"true“,这样取消导出就会立即发生--否则它将等待当前调用完成,从而击败本练习的对象。我可能也会同步访问整个服务器对象,以防止“同时发生两个调用”的争用。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/147109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档