我正在考虑如何使用java 构建一个没有Sun实时系统API.的实时系统。
比方说,老板在上午11点产生一个事件,他必须在上午11点10分得到反馈。如果没有任何反馈,他将重新发送他的事件。
员工在上午11点01分得到老板的活动,他必须离开1分钟才能把结果发回给老板。所以实际上他有8分钟的时间来做他的工作。在上午11点09分,不管他是否完成了反馈,他都必须发送反馈。
这是一个实时系统,不是吗?
在这种情况下,如何使用java设计我们的系统?这是一种生产者-消费者模式。在使用者端,使用哪个对象(阻塞队列、延迟队列.)才能满足这个要求?
欢迎任何网站链接,开放源码。
谢谢。
发布于 2010-12-15 19:03:36
您不能用Java进行真正的计算机工程意义上的实时编程.您将受到线程调度程序和具有完全未知基础属性的操作系统的支配。如果操作系统想等到11:20才恢复到JVM的CPU时间,那就是它的事了。
如果您的意思是“实时”,在Microsofty的方式中,就像“事情响应得非常快,并且我们非常小心地不去阻止主UI线程”,这并没有一个明确的技术含义。它的意思是“面向代码的体系结构用户给出他们不需要在计算机上等待的外观。”
-编辑回应意见。
如果11:08的意思是‘11:07:59和11:08:01之间’,那么普通的java通常可以通过仔细的编程在现代平台上为您做到这一点。它不能传递的是这样一种情况: 11:08:01发生的事件被认为是一个平台缺陷,它只是不能保证这一点。
当我们说‘实时’和RTS API是为了什么的时候,更像是“键头必须在这个毫秒的坐标处,如果它晚了半毫秒以上,那么这个部件就会有缺陷,如果它提前超过2毫秒,一个300,000美元的伺服台就会撞上它的轴承,导致10,000,000美元的装配线中断。”
发布于 2010-12-15 18:10:15
您所描述的系统可以用JMS解决。
使用pub-sub队列来分配工作。“老板”是出版商。每个工作人员都是“订户”。
“老板”需要将它发布的每条消息存储在一个“回退”区域(可能是一个列表),并设置一个10分钟的计时器。当它得到对消息的响应时,它将清除定时器,并从"check back“区域删除该消息。
https://stackoverflow.com/questions/4452763
复制相似问题