Этот вопрос, кажется, наполовину дизайн, наполовину реализация.Похоже, вас больше всего волнует вопрос о том, чтобы найти какой-нибудь способ для служб Java USB, таких как jUSB , обслуживать события горячей замены из системы, позволяя вам вызывать событие с помощью инверсии управления вместозапуск потока, который страстно и итеративно опрашивает систему в фоновом режиме.
Поддержка, которую вы ищете , была реализована еще в 2005 году как JSR-80, и, кажется, продолжает жить,все великие проекты, которые превысили свою коммерческую поддержку, как javax-usb
на SourceForge .Обратите внимание, что в их игрушечном примере (в javax-usb-example/src/ShowTopology.java
) их предпочтительная модель все еще основана на опросе.
Однако не все потеряно!В файле свойств для javax.usb
мы находим это:
# Если вместо ожидания уведомления о горячей замене следует использовать опрос.
# НекоторыеВерсии ядра содержат ошибку, и не обновляют узлы устройства до тех пор, пока через много секунд после пробуждения потоков не ожидается файл устройств.Если вы не получаете события горячего подключения в системе с умеренной или высокой нагрузкой, используйте опрос.
# Обратите внимание, что, поскольку новое (ошибочное?) Поведение ядра нарушает javax.usb, по умолчанию используется значение true!
# Если вы знаете, что ваше ядро не сломано, вы можете установить для него значение false.
# com.ibm.jusb.os.linux.LinuxUsbServices.topologyUpdateUsePolling = true
А в javax-usb/src/javax/usb/event/UsbServicesListener.java
мы видим модель для настройки прослушивателя событий USB, которую можно использовать, когда устройство подключено или отключено от системы.Внешне не дано никакой документации о том, работает ли это , однако , а самим документам в основном 8 лет.
Поэтому разумно предположить, что хотя поддержка теоретически существует, он отстает, устарел и остро нуждается в обновлении сообществом.Это то, что может помочь исправить это прекрасное сообщество в SO, поэтому я начну закрывать с , указывая непосредственно на сам проект.
Пока, пока не появится улучшенное оборудование илиПоддержка горячего подключения существует, опрос все еще является лучшим решением.
( Дополнительная эталонная реализация javax-usb
)