Листинг 7.21 Executorservice, который отслеживает отмененные задачи после выключения.public class TrackingExecutor extends AbstractExecutorService {
private final ExecutorService exec;
private final Set tasksCancelledAtShutdown =
Collections.synchronizedSet(new HashSet());
public TrackingExecutor(ExecutorService exec) {
this.exec = exec;
}
public void shutdown() {
exec.shutdown();
}
public List shutdownNow() {
return exec.shutdownNow();
}
public boolean isShutdown() {
return exec.isShutdown();
}
public boolean isTerminated() {
return exec.isTerminated();
}
public boolean awaitTermination(long timeout, TimeUnit unit)
throws InterruptedException {
return exec.awaitTermination(timeout, unit);
}
public List getCancelledTasks() {
if (!exec.isTerminated())
throw new IllegalStateException(/*...*/);
return new ArrayList(tasksCancelledAtShutdown);
}
public void execute(final Runnable runnable) {
exec.execute(new Runnable() {
public void run() {
try {
runnable.run();
} finally {
if (isShutdown()
&& Thread.currentThread().isInterrupted())
tasksCancelledAtShutdown.add(runnable);
}
}
});
}
}
< /code>
Записано в книге: < /p>
Trackingexecutor имеет неизбежное условие гонки, которое может заставить его дать ложные положительные результаты: задачи, которые идентифицируются как отмененные, но фактически завершенные. Это Овс, потому что пул потоков может быть выключен между при выполнении последней инструкции задачи, и когда пул записывает задачу как полную.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... ch-were-in
Параллельность Java на практике 7.2.5 Получите список отмененных задач, которые были в процессе, когда исполнитель был з ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Получите список отмененных задач, которые были выполнены, когда исполнитель был закрыт
Anonymous » » в форуме JAVA - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Получите список отмененных задач, которые были выполнены, когда исполнитель был закрыт
Anonymous » » в форуме JAVA - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-