Folks
Я реализую файловую очередь ( см. Мой предыдущий вопрос ) с использованием sqlite. У меня есть следующие темы, работающие в фоновом режиме:
- thread-1 для очистки структуры памяти в таблице «queue» (вставка в таблицу «queue»).
- thread-1 для чтения и «обработки» таблицы «queue» запускается каждые 5–10 секунд
- thread-3 - запускается очень редко и удаляет старые данные, которые больше не нужны, из таблицы "queue", а также работает в вакууме, поэтому размер файла базы данных остается небольшим.
Теперь мне хотелось бы, чтобы каждый поток получал любую необходимую ему блокировку (ожидание с таймаутом, если это возможно), а затем завершал транзакцию. Это нормально, если потоки не работают одновременно - важно то, что однажды начавшаяся транзакция не завершится сбоем из-за ошибок «блокировки», таких как «база данных заблокирована».
Я посмотрел на документацию по транзакциям , но, похоже, нет возможности "тайм-аута" (я использую JDBC). Можно ли установить большое время ожидания в соединении?
Одно решение (не опробованное), о котором я могу подумать, - это иметь пул соединений с максимум 1 соединением. Таким образом, одновременно может быть подключен только один поток, поэтому мы не должны видеть никаких ошибок блокировки. Есть ли лучшие способы?
Thanx!