【发布时间】:2017-04-21 10:38:50
【问题描述】:
我有一个程序需要无限循环才能保持运行。这样做的原因是我有一个 SQS 消费者,它会为它收到的每条消息分拆一个线程,这就是我的大部分逻辑所在。 可悲的是,SQS 消费者在内部运行在我无法控制的另一个线程上,因为最好的实现是在主线程上运行它。
我需要一种方法来阻止程序在消费者活着时退出,目前我正在使用带有线程睡眠的 while 循环,但我记得这不是一个很好的解决方案。
在我无法更改 SQSConsumer 的约束条件下,保持程序运行的最佳方法是什么。
更新:该程序不打算停止,SQSConsumer 将启动 10 个线程从服务中提取消息,我希望它继续这样做,直到我强制程序退出通过将 consumer.isRunning() 设置为 false,或者通过 Ctrl+c 强制程序终止。
例子:
SQSConsumer consumer = new SQSConsumer((event) -> {
callSomeLogicHere(event);
});
while (consumer.isRunning()) {
Thread.sleep(100);
}
【问题讨论】:
-
多线程的目的被打败了
-
你能提供更多关于你的 SQSConsumer 类的细节吗?
标签: java multithreading loops