Получите список отмененных задач, которые были выполнены, когда исполнитель был закрытJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Получите список отмененных задач, которые были выполнены, когда исполнитель был закрыт

Сообщение Anonymous »

Листинг 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»