Java параллельное выполнение задачи потока - PullRequest
1 голос
/ 06 сентября 2010

У меня есть задача, которую нужно выполнить по расписанию. (Он в основном опрашивает базу данных в поисках изменений, а затем выполняет код в зависимости от результата). Проблема в том, что мне нужно, чтобы задание опроса выполнялось, даже если оно уже выполняется.

До сих пор я пытался использовать комбинацию Timer / TimerTask с методом scheduleAtFixedRate() и комбинацию ScheduledThreadPoolExecutor / Thread с методом scheduleAtFixedRate().

Оба ждут завершения текущей запланированной задачи перед запуском следующей. Мне нужно иметь возможность планировать выполнение задачи каждые 5 секунд и запускать ее, даже если последнее выполнение задачи еще не завершено.

Есть идеи?

1 Ответ

3 голосов
/ 06 сентября 2010

Как насчет использования одного Timer в качестве таймера запуска, а затем отдельного пула потоков для выполнения: когда срабатывает таймер, вы передаете задачу в пул потоков для немедленного выполнения. (Вы можете настроить пул потоков так, чтобы одновременно выполнялось максимальное количество задач.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...