Если ваш метод checkChanges()
не спит или не блокируется, код, который написан в данный момент, будет перегружать процессор, вызывая loadData.checkChanges();
так быстро, как только процессор сможет это сделать. В идеале вы должны сделать что-то вроде вызова loadData.wait()
, а затем вызвать другой поток loadData.notify()
, когда вы хотите выполнить проверку. Более простое и почти такое же хорошее решение - периодически спать в потоке, например:
for(;;){
result = loadData.checkChanges();
if(result == true){
//If changes found in the properties file then reSchedule tasks
reSchedule();
}
try {
Thread.sleep(100);
}
catch (InterruptedException ignored) {}
}
Также, пожалуйста, не используйте for(;;)
. Вместо этого попробуйте while(true)
, это намного понятнее. Или, что еще лучше, попробуйте while(!stop)
, где stop
- это логическая переменная, для которой устанавливается значение true, когда контекст вашего приложения разрушен (завершение работы сервера, отмена развертывания веб-приложения и т. Д.).