Что происходит с потоками при возобновлении из окна гибернации

У меня есть простая программа для перемещения указателя мыши каждую минуту, чтобы избежать запуска заставки. Это работает на ноутбуке Windows. Ночью я обычно "впадаю" в ноутбук, а утром "возобновляю". При возобновлении движения мыши программа зависла. У меня есть два вопроса:

  1. Что происходит с потоками Java во время цикла гибернации / возобновления?
  2. Как я могу изменить программу для автоматического перезапуска потока после возобновления работы ноутбука?

Основная часть программы показана ниже - она ​​содержится в приложении 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();

0 ответов

Другие вопросы по тегам