Что происходит с потоками при возобновлении из окна гибернации
У меня есть простая программа для перемещения указателя мыши каждую минуту, чтобы избежать запуска заставки. Это работает на ноутбуке Windows. Ночью я обычно "впадаю" в ноутбук, а утром "возобновляю". При возобновлении движения мыши программа зависла. У меня есть два вопроса:
- Что происходит с потоками Java во время цикла гибернации / возобновления?
- Как я могу изменить программу для автоматического перезапуска потока после возобновления работы ноутбука?
Основная часть программы показана ниже - она содержится в приложении JavaFX с меткой, которую я обновляю.
go = new Thread() {
@Override
public void run() {
try {
Robot hal = new Robot();
int sec;
PointerInfo pi = null;
while (true) {
sec = 60;
while (sec > 0) {
hal.delay(1000);
pi = MouseInfo.getPointerInfo();
final Point pObj = pi.getLocation();
final int sec2 = sec;
Platform.runLater(() -> lab.setText(String.format("%2d %4d %4d", sec2, pObj.x, pObj.y)));
sec = sec - 1;
}
hal.mouseMove(pi.getLocation().x + 1, pi.getLocation().y + 1);
}
} catch (AWTException ex) {
Logger.getLogger(MouseMoverFX.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
go.start();