Re[2]: Отмена выполнения задачи в отдельном потоке и FutureT
От: runtime2  
Дата: 18.03.09 08:58
Оценка:
Здравствуйте, zubr, Вы писали:

Z>Единственное что приходит в голову — monitor! или флаг с монитором — задача выполнилась (выполнилась = full iteration|canceled|...), а монитор что бы на нем повисеть можно было в случае cancel-а, ну и монитор будет ограничивать доступ к полю, да и вообще можете обернуть свои задачи во что нибудь которое будет само уметь...


Хотелось бы без флага с помощью какой-нибудь высокоуровневой конструкции. Например, просто одним флагом не обойтись из-за того, что cancel() может вызываться у еще не запущенной задачи.
Task task = new Task();
FutureTask<Void> future = new FutureTask<Void>(task);
task.setFuture(future);
future.cancel(true);
executor.execute(future);

Насчет блокировки на cancel() согласен. Но это если не нужен результат задачи,который возвращает метод get().
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.