因此,我面临着编写Java应用程序以响应某些事件的情况。每个收到的事件都需要处理,处理可能需要一些时间。所以我的应用程序基本上会执行以下操作:
CompletableFuture.runAsync(() -> EventProcessor.process(event));
即
Class EventHandler implements Handler {
public void handleEvent(Event event) {
CompletableFuture.runAsync(() -> EventProcessor.process(event));
}
}
我的问题是:
答案 0 :(得分:2)
如果我收到很多事件会怎样?由于处理事件可能需要一些时间(例如10分钟)
新任务占用一些内存,因此可能发生OutOfMemoryException。 然后,将他们排队到执行器中。排队时,如果执行程序的输入队列大小受限制,则可能引发RejectedExecutionException。
如何管理和安排后台任务?他们会被杀死吗?如果是,我如何控制调度/终止行为?
如果任务提交成功,它将在稍后的时间执行。只有您可以明确取消它。当然,如果您提交1000个10分钟的任务,则可以将结果等待几天。