2 回答

TA貢獻2041條經驗 獲得超4個贊
看一段偽代碼:
while (true) {
task = fetch task
If no task: wait/yield
Else: execute task
}
換句話說:您只需實現一個run()方法,該方法循環并執行任何Runnable(或傳遞給它的任何內容)的 run 方法。如果沒有工作可用,則該方法會休眠或等待通知。

TA貢獻1795條經驗 獲得超7個贊
首先,FutureTask是Runnable,所以你可以task.run();在// TODO.
其次,你根本不需要taskQueue = new BlockingQueue<FutureTask<V>>();。將您的實現ExecutorService作為對現有Executor:的補充
class MyExecutorService implements ExecutorService {
private final Executor executor;
public MyExecutorService(Executor executor) {
this.executor=executor;
}
public Future<?> submit(Runnable task) {
FutureTask task = new FutureTask(task);
executor.exec(task);
return task;
}
}
添加回答
舉報