我们的系统处理从消息传递系统传递的消息。如果 10 秒后未收到消息,则应引发错误(不活动超时)。
我正在考虑使用ScheduledExecutorService
(带 1 个线程)。每次收到消息,我都会取消之前的超时任务并提交一个新的:
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
Callable timeoutTask = new Callable() {...};
...
synchronized {
timeout.cancel();
timeout = executor.schedule( timeoutTask, 10, TimeUnit.SECONDS);
}
在正常情况下,我们处理 ~ 1000 / 秒。这种方法会扩展吗?