public boolean checkMail(Set hosts, long timeout, TimeUnit unit)
throws InterruptedException {
ExecutorService exec = Executors.newCachedThreadPool();
final AtomicBoolean hasNewMail = new AtomicBoolean(false);
try {
for (final String host : hosts)
exec.execute(new Runnable() {
public void run() {
if (checkMail(host))
hasNewMail.set(true);
}
});
} finally {
exec.shutdown();
exec.awaitTermination(timeout, unit);
}
return hasNewMail.get();
}
< /code>
Это написано в книге: < /p>
Причина, по которой Atomicboolean используется вместо летучих логических Использование изменчивого типа
для переменной hasnewmail здесь должна достичь одной и той же функциональности, верно? Я не совсем понимаю, чем это отличается от подхода в книге.
Листинг 7.20. Использование частного исполнителя, чья срок службы ограничена методом вызова. [code]public boolean checkMail(Set hosts, long timeout, TimeUnit unit) throws InterruptedException { ExecutorService exec = Executors.newCachedThreadPool(); final AtomicBoolean hasNewMail = new AtomicBoolean(false); try { for (final String host : hosts) exec.execute(new Runnable() { public void run() { if (checkMail(host)) hasNewMail.set(true); } }); } finally { exec.shutdown(); exec.awaitTermination(timeout, unit); } return hasNewMail.get(); } < /code> Это написано в книге: < /p>
Причина, по которой Atomicboolean используется вместо летучих логических Использование изменчивого типа [/code] для переменной hasnewmail здесь должна достичь одной и той же функциональности, верно? Я не совсем понимаю, чем это отличается от подхода в книге.
Листинг 7.20. Использование частного исполнителя, чья срок службы ограничена методом вызова.
public boolean checkMail(Set hosts, long timeout, TimeUnit unit)
throws InterruptedException {
ExecutorService exec = Executors.newCachedThreadPool();...
Листинг 7.21 Executorservice, который отслеживает отмененные задачи после выключения.public class TrackingExecutor extends AbstractExecutorService {
private final ExecutorService exec;
private final Set tasksCancelledAtShutdown =...
Листинг 7.20. Использование частного исполнителя, чья срок службы ограничена методом вызова.
public boolean checkMail(Set hosts, long timeout, TimeUnit unit)
throws InterruptedException {
ExecutorService exec = Executors.newCachedThreadPool();...