Java中回调应该发生在哪个线程上?

cvxl0en2  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(136)

我正在开发一个Java库,它在ScheduledExecutorService中运行一个计划任务。如果用户指定了回调,那么在该任务之后,这些回调将被调用。
现在我只是让调度器线程调用回调。这些回调应该在它们自己的线程池中的ExecutorService中执行吗?

6ovsh4lw

6ovsh4lw1#

在我看来,最好的方法是为客户提供两种选择:使用为回调指定的Executor和不使用它,类似于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

这样,客户端可以选择哪种方法更适合他们的用例。

相关问题