@Override public synchronized void close() { if (!m_Open) throw new IllegalStateException("device not open"); m_StopThread = true; UdevLibrary.close(m_DeviceHandle); m_Thread.interrupt(); m_SyncShutdown.waitAndSync(); m_Frontend.closeDevice(this); m_Open = false; }