Рассмотрите возможность перемещения вашего кода из цикла while в некую форму таймера.
Некоторыми распространенными рекомендациями будут встраивание класса Timer в JVM или Quartz которая является сторонней библиотекой от Terracotta.
В качестве примера вашей проблемы с сигнализацией при использовании стандартных параметров JVM
Timer timer = new Timer();
//Start the alarm now, change the date object to your specific time
timer.schedule(new AlarmTimerTask(), new Date(System.currentTimeMillis()));
И ваш класс AlarmTimerTask будет
public class AlarmTimerTask extends TimerTask {
public void run(){
//Do something
}
}
если в какой-то момент вы хотите удалить таймер (выключить его или приложение закрывается), вызовите timer.cancel()
, чтобы удалить задачу.
Кварц предоставит вам дополнительную функциональность и хорошую библиотеку для изучения
Редактировать: я должен указать, что если вы назначите класс AlarmTimerTask для своей собственной переменной вместо инициализации его в методе schedule (), вы также можете вызывать метод cancel () для отдельной задачи, а не только для Timer