Я написал небольшой класс Java AlertNotification, содержащий определение SQL-запроса внутри метода с именем getMessages (), используя метод createSQLQuery () Hibernate.Класс реализует интерфейс Runnable, поскольку идея состоит в том, чтобы иметь ThreadPool, который будет создавать поток каждые 60 секунд.Каждый созданный поток будет выполнять запрос Hibernate.
ScheduledThreadPoolExecutor stpe = new ScheduledThreadPoolExecutor(2);
stpe.scheduleAtFixedRate(new AlertNotification(), 0, 60, TimeUnit.SECONDS);
Так что, как только я подключил все к ThreadPool, все выглядело довольно хорошо.Потоки запускались каждые 60 с, получая доступ к БД и возвращая правильное количество строк (192) из таблицы.Однако всякий раз, когда я заходил в консоль SQL и делал обновление для этой таблицы, чтобы получить на ходу другое количество строк (20), то есть ThreadPool все еще создает потоки, потоки продолжали возвращать предыдущие 192 строки.Как будто ThreadPool или потоки не знали об изменениях, только что выполненных.
public void run(){
this.openHibernateSession();
ArrayList<HashMap> messages = this.getMessages();
this.closeHibernateSession();
}
У меня проблема с синхронизацией Hibernate-Thread?Я удостоверился, что открываю сеанс Hibernate для каждого потока и закрываю его, когда работа потока завершена.
Большое спасибо за помощь.