提问人:leros 提问时间:9/26/2023 更新时间:9/26/2023 访问量:43
在 Java 中,回调应该发生在哪个线程上?
What thread should callbacks occur on in Java?
问:
我正在开发一个 Java 库,该库在 ScheduledExecutorService 中运行计划任务。如果用户指定回调,则在该任务之后,将调用这些回调。
现在我只有调度程序线程调用回调。这些回调是否应该在它们自己的线程池中自己的 ExecutorService 中执行?
答:
1赞
Nolequen
9/26/2023
#1
在我看来,最好的方法是向客户端提供两个选项:为回调指定一个执行器,没有它,类似于在 CompletableStage 中完成的方式:
public CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action); // executes action on internal default executor
public CompletionStage<Void> thenAcceptAsync(Consumer<? super T> action, Executor executor); // executes action on provided executor
这样,客户可以选择哪种方法更适合他们的用例。
评论
0赞
leros
9/27/2023
这对于完全的灵活性是有道理的。现在,我将有一个单独的 ExecutorService 来执行回调。
评论