此问题是所提问题的延续IBM MQ listener service - onMessage not getting triggered
假设相同的代码正在生产中,现在我们如何保持程序运行。我觉得添加扫描仪代码不是实现它的正确或有效方法。有没有更好的解决方案来保持程序运行,所以当到达main末尾时,程序不会退出。理想情况下,我认为对启动方法qc.start()
的调用应无限期等待。请让我知道我们如何以正确和理想的方式实施此操作。
要求是侦听器应无限期运行以等待新消息。我没有任何其他业务条件可以放入main方法中以保持程序运行。添加扫描程序代码似乎不是一个好方法。理想的方法是什么??
我想您要问的是如何使Java程序无限期地运行。
有几种方法,但是您确实需要一种通过用户中断或信号来终止它的方法,并且您不希望它处于紧密的循环中,这样会消耗所有的CPU和堆栈内存,没有任何余地onMessage
事件。
您不想让onMessage
进入睡眠状态,因此应该在辅助线程中生成它,从而允许主线程定期从睡眠中唤醒以检查是否有线程中断。终止信号。
基础是
Thread worker = new Thread(new xyz();
worker.start();
while(true) {
try {
Thread.sleep(sleep duration);
} catch(InterruptedException ex) {
// check for termination signal
// if required, terminate
}
}