Avi*_*lax 3 java concurrency executor executors
我确信我可以将一些东西放在一起,这可以让我弄清楚这一点,但我希望有一个我只是缺少的开箱即用的解决方案.我阅读了文档,但我没有看到任何内容.
我的特定应用程序使用的是a ThreadPoolExecutor支持DelayQueue,虽然我不确定这是否重要.
谢谢!
Vic*_*kin 10
一个简单的方法:用代码包装您的任务,这将调用新任务的回调信号开始,传递您希望它的所有数据:
interface StartTaskWatcher {
void taskStarted(Object data);
}
class StartTaskSignalingWrapper implements Runnable {
private final Runnable task;
private final String taskDescription;
private final StartTaskWatcher startTaskWatcher;
StartTaskSignalingWrapper(Runnable task, String taskDescription, StartTaskWatcher startTaskWatcher) {
this.task = task;
this.taskDescription = taskDescription;
this.startTaskWatcher = startTaskWatcher;
}
public void run() {
startTaskWatcher.taskStarted(taskDescription);
task.run();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我认为没有一种可靠的方法可以做到这一点.如果你想要计数,有可用的方法(getTaskCount()/ getCompletedTaskCount())有帮助.如果您需要实际任务,那么AFAIK需要手动跟踪任务,通过覆盖beforeExecute()和afterExecute()是一种方式.
| 归档时间: |
|
| 查看次数: |
248 次 |
| 最近记录: |