确定当前在ExecutorService中运行的Callables

Bra*_*ace 3 java multithreading callable executorservice

我希望能够将我已经使用的Callables提供submit给当前正在进行的ExecutorService(特别是ThreadPoolExecutor)(因此它们不可用getQueue()).

我尝试创建一个子类来覆盖beforeExecute,但在那里给出的Runnable原来是FutureTask,而不是提交的原始Callable.

还有另一种方法可以确定活动的Callables吗?


最后,我想对这些信息做两件事:

  1. 获取正在运行的任务,以便它们可以显示在用户界面中
  2. 检查Callable引用的文件是否与模式匹配,如果匹配,则取消它

axt*_*avt 5

您可以覆盖AbstractExecutorService.newTaskFor(),它应该允许您访问原始Runnables和Callables.然后用跟踪装饰器装饰它们并传递给super.newTaskFor().