как очищать процессор в Java?

Моя программа представляет собой распределенное программное обеспечение для небольшой лаборатории. Он написан на java, но поскольку в дневное время компьютеры используются, мне приходится вручную перезапускать его вечером. Я бы решил проблему, запуская ее из службы каждый раз при запуске компьютера, но мне нужен механизм для обнаружения: 1) ввода пользователя (мышь, клавиатура и т. д.) 2) входа пользователя в систему.

Обнаружение любого пользовательского ввода из java невозможно. Есть ли какие-либо рамки для чего-то подобного?


person dan    schedule 21.02.2011    source источник
comment
Рассматривали ли вы запуск его в качестве демона и планирование его запуска и остановки по желанию?   -  person Andy Thomas    schedule 21.02.2011
comment
Во всяком случае, обнаружение пользовательского ввода, направленного на другие программы, не должно быть возможным - это было бы серьезной дырой в безопасности. Приемлема ли услуга по расписанию (например, с 20:00 до 04:00)?   -  person extraneon    schedule 21.02.2011
comment
Не могли бы вы просто оставить его включенным с минимальным приоритетом, в том числе и в дневное время?   -  person Erik    schedule 21.02.2011
comment
есть часы в дневное время, когда лаборатории свободны, и я их не знаю.   -  person dan    schedule 21.02.2011
comment
лучшее решение, которое я нашел, - это получить активность пользователя с помощью JNA. Используя это, можно вычислить время простоя пользователя.   -  person dan    schedule 28.03.2011


Ответы (1)


Обнаружение пользовательского ввода из Java возможна, но не со стандартными технологиями. Учитывая отличный пример aTunes, вы можете сделать это с помощью, в зависимости от вашей платформы

Учитывая ваш другой вопрос, я бы использовал собственные возможности клиентских ОС, чтобы лучше справиться с вашей проблемой. Первое, что нужно сделать, это сделать ваш процесс Java более низким приоритетом. Таким образом, он будет работать все время, не блокируя пользователя. Я также заставлю эту программу останавливаться, когда загрузка ЦП превышает заданную цель. Этого можно добиться с помощью JMX, как этот предыдущий вопрос объясняет.

person Riduidel    schedule 21.02.2011
comment
Я полностью согласен с подходом загрузки процессора. В конце концов, компьютер может делать что-то важное, даже если ни одна клавиша не нажата. - person biziclop; 21.02.2011