我有一个程序需要一个无限循环来保持运行。原因是我有一个SQS消费者,它会为每条消息分配一个线程,这是我的大部分逻辑所在。 不幸的是SQS使用者在另一个线程上内部运行,我无法控制,因为最好的实现是在主线程上运行它。在java中创建无限循环的最佳方式是什么?
我需要一种方法来停止程序退出,而消费者还活着,目前我使用一个线程睡眠while循环,但我记得有关这不是一个很好的解决方案。
当给定限制条件时,如果我没有办法改变SQSC消费者,那么最好的方法是保持程序活着。
更新:程序不打算停止过,在SQSConsumer起转10个线程从服务拉动的消息,我希望它继续这样做,直到我强迫程序中通过设置使用者退出。 isRunning()为false,或者通过强制程序以Ctrl + c结束。
例子:
SQSConsumer consumer = new SQSConsumer((event) -> {
callSomeLogicHere(event);
});
while (consumer.isRunning()) {
Thread.sleep(100);
}
多线程的目的被击败 – GurV
你可以提供关于你的SQSConsumer类的更多细节吗? – assylias