我试着环顾四周,但我无法找到问题的答案。 我目前正在编写一个Java程序,用于读取和更新HID设备的固件。我正在使用pureHID java库与我的设备进行通信,一切正常。
我目前遇到的唯一问题是,我无法修复,涉及事件的同步。
我会举个例子。 复制当前安装在设备上的固件时,我使用以下方法
dev.setOutputReport((byte) 0, packet_to_send, BUFFER_SIZE);
单元的答案将以连接到设备管理器的监听器收到的事件的形式出现,即将调用以下监听器
onInputReport() /* Something will happen */
我的问题是SOMETIMES,可能是因为并发写入/侦听调用,程序完全冻结,没有任何异常,也没有任何错误信号。
为了解决这个问题,我试图实现一个简单的Lock机制,只有在收到回复时才释放Lock;但遗憾的是,有时可能会丢失回复数据包,从而阻止我陷入僵局。
一种可能的解决方案我虽然会使用一个定时器,如果它没有被释放将在x毫秒后自动释放锁定(回复将在10ms内到达或者不会到达),但我不知道如何创建一个用于管理计时器的独立线程。
请你帮我解决这个问题,或者建议我另一种并发机制,如果回复丢失,我可以使用它来同步两个块或重新传输消息?
非常感谢任何帮助。
洛伦佐