Поскольку вы не указали компилятору, что stop
может быть изменено и прочитано несколькими потоками:
private static boolean stop;
разрешено оптимизировать это:
while (!stop) {
}
на
if (!stop) {
while (true) {
}
}
, который никогда не остановится, если stop
изначально ложно.
Объявление stop
volatile
:
private static volatile boolean stop;
запрещает эту оптимизацию.
SMO не получает метаданные автоматически при простом создании нового экземпляра класса Базы данных. Получение метаданных может требовать времени, особенно в холодной среде. База данных Call. Обновление () перед циклом.