Мой вопрос о this answer здесь, который, кажется, работает на мой случай (tomcat). Однако я вижу, что он использует newSingleThreadScheduledExecutor()
. В моем случае периодическая задача, которая должна быть выполнена, может быть длительной, и я хочу убедиться, что она будет не заблокировать мой веб-сайт до его завершения (выполняется как разделенный Thread
). Кроме того, я хочу убедиться, что моя задача Runnable
сможет совместно использовать пул соединений mySQL (через спящий режим), который использует веб-сайт. Итак, это правильный подход или мне нужно использовать что-то еще?Запуск запланированной задачи в Tomcat
ответ
Я хочу, чтобы убедиться, что она не будет блокировать мой веб-сайт до тех пор, пока завершена (запустить как отдельный Thread)
HTTP-коннектор пул потоков и пул потоков, выделенный для запуска таймера задачи разные. Они не зависят друг от друга и не будут блокировать ваш сайт.
Кроме того, я хочу, чтобы убедиться, что моя задача Runnable сможет доли MySql пула соединений (через спящий режим), что веб-сайт использования. Итак, это еще правильный подход или мне нужно использовать что-то еще?
Настройте общий пул соединений с помощью фреймворка, например commons DBCP, и найдите ресурс JNDI. Как только вы найдёте, что DataSource
и работа над соединением завершена, верните соединение обратно в пул.
Подход в порядке.
Большое вам спасибо. Что касается соединения, я уже использую jdbc + hibernate – lviggiani
еще один вопрос. Все задачи, добавленные «scheduler.scheduleAtFixedRate», выполняются последовательно (в одном потоке) или выполняются параллельно, и каждая задача имеет свой собственный Thread? Я ищу решение с несколькими потоками, где каждая задача выполняется независимо. – lviggiani
Хорошо, я сделал тест и увидел, что «newSingleThreadScheduledExecutor» выполнит задачи последовательно. Если я хочу использовать их параллельно, тогда мне нужно использовать «newScheduledThreadPool» – lviggiani
- 1. Запуск удаленной запланированной задачи
- 2. Запуск запланированной задачи после выполнения другой запланированной задачи
- 3. Запуск запланированной задачи из сценария
- 4. Запуск запланированной задачи в плагине Wordpress
- 5. Запуск Microsoft Access в качестве запланированной задачи
- 6. Запуск запланированной задачи Windows из ASP.net
- 7. запуск скрипта perl из запланированной задачи Windows
- 8. Запуск запланированной работы в PHP
- 9. Статус удаленной запланированной задачи
- 10. Запланированной задачи живое
- 11. Получить результат запланированной задачи
- 12. Предотвращение назначения запланированной задачи
- 13. Получить идентификатор задачи запланированной задачи в сельдерее
- 14. Запуск сценария в качестве запланированной задачи без минимизации активного окна
- 15. Запуск запланированной задачи один раз в день на Android
- 16. Настройка запланированной задачи в .Net
- 17. Запуск WatiN с помощью запланированной задачи или службы Windows
- 18. Windows - запуск службы Wamp как система/пользователь - привилегия запланированной задачи
- 19. Запуск запланированной задачи как администратора на нескольких Azure VM
- 20. Запуск запланированной задачи при подключении к определенной сети
- 21. Запуск файла vbs с помощью запланированной задачи на сервере 2003
- 22. Запуск запланированной работы Spark
- 23. Как отобразить свойства запланированной задачи?
- 24. Разработка запланированной задачи для Windows
- 25. Ошибка запланированной задачи Plesk 12
- 26. VBS для создания запланированной задачи
- 27. Извлечь данные из запланированной задачи
- 28. XPath Query для запланированной задачи
- 29. Пауза и возобновление запланированной задачи
- 30. Каков правильный способ перезапуска запланированной задачи ScheduledExecutorService?
Моим решением было бы использовать планировщик, такой как Quartz. С этим легко работать и уже много лет тестируется в prod. Тем не менее, мне не нравится писать это как ответ на эту тему, так как я вообще против внедрения новых фреймворков для решения одной задачи :) –