2013-07-16 2 views
0

Если я использую Executors.newSingleThreadExecutor(), чтобы получить ExecutorService, могу ли я установить тайм-аут для выполнения каждой из Runnables? Если нет, есть ли значение по умолчанию? Или будет заблокирован поток, если одна из runnables занимает много времени для выполнения?Можно ли установить тайм-аут для ExecutorService, если он создан с использованием объекта Executors?

Я прочитал андроид документацию, но это не совсем понятно, для меня (от Executors.newSingleThreadExecutor() Android ссылки):

Создает Исполнитель, который использует один рабочий поток, работающий от неограниченной очереди. (Обратите внимание, что если этот единственный поток завершается из-за сбоя во время выполнения до выключения, новый, если потребуется, будет занят, чтобы выполнять последующие задачи.) Гарантируется выполнение задач последовательно и не более одной задачи будет активна в любой момент времени. В отличие от эквивалентного newFixedThreadPool (1), возвращенный исполнитель гарантированно не может быть перенастроен для использования дополнительных потоков.

ответ

0

Что такое Runnable не так ли? AFIK, если это не Future, то вы не можете установить для него таймаут. Вы также можете ввести в заблуждение тайм-аут, который можно установить на ThreadPoolExecutor (время пула, чтобы убить простаивающие потоки, чтобы вернуться к размеру основного пула) с временем выполнения отдельных задач.

+0

Спасибо за указание на использование фьючерсов. – JAC