Листинг 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>
Это написано в книге «Параллелизм Java на практике» (7.2.5): < /p>
Trackingexecutor имеет неизбежное состояние гонки, которое может привести к тому, что лживые позитивы: задачи, которые идентифицируются как отмененные, но фактически завершенные. Это Овна, потому что пул потоков может быть выключен между при выполнении последней инструкции задачи, и когда пул записывает задачу как полную. Это не проблема, если задачи идентифицируют (если выполнять их дважды, имеет тот же эффект, что и выполнение их один раз), поскольку они обычно находятся в веб -гусенике. Неампозитивные задачи?
Подробнее здесь: https://stackoverflow.com/questions/796 ... or-was-shu
Получите список отмененных задач, которые были выполнены, когда исполнитель был закрыт ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Получите список отмененных задач, которые были выполнены, когда исполнитель был закрыт
Anonymous » » в форуме JAVA - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как изменить заказ A и количество задач, которые будут выполнены в воздушном потоке
Anonymous » » в форуме Python - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-