私はThreadPoolExecutor
を持っており、タスクを提出しています。将来のタスクはThreadPoolExecutorから拒否されました
private ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(1));
このコードはThreadPoolExecutor
にRunnable
を提出します。
protected void waitAndSweep(final String symbol) {
runnable = new Runnable() {
public void run() { /* irrelevant code */ }
};
try {
Future<?> self = threadPoolExecutor.submit(runnable);
futures.add(self);
} catch (RejectedExecutionException re) {
/* this exception will be thrown when wait and sweep is called more than twice.
* threadPoolExecutor can have one running task and one waiting task.
*/
} catch (Exception e) {
logEvent(StrategyEntry.ERROR, "waitAndSweep", symbol, "Exception caught...", e);
}
}
次のコードは、タスクを停止します。
ここprotected synchronized void stop(StrategyEntry entry) throws Exception {
for (Object future : futures) {
((Future<?>) future).cancel(true);
}
futures.clear();
threadPoolExecutor.shutdown();
}
問題がある:
タスクjava.util.concurrent.FutureT[email protected]はjava.util.concurrentのから拒否:私はタスクを停止しようとすると、私は次の例外を取得しています。 ThreadPoolExecutor @ 216393fb [終端、プールサイズ= 0、アクティブなスレッド= 0、キューに入れられたタスク= 0、完了したタスクは= 1]
このエグゼキュータではどこでも 'shutdown()'を呼び出していますか? – RAnders00
停止方法ではyes – MMPgm
容量1のバッキングキューを作成していますが、すでに他のタスクがありますか? –