Java 安卓USB附件多线程
由于Java 安卓USB附件多线程,java,android,multithreading,Java,Android,Multithreading,由于多线程和安卓开放附件引起的头痛 我需要与USB附件通信,但我需要从两个线程进行通信。 一个线程生成并发送数据,另一个线程读取数据 为什么我不使用单线程?因为在读之前可以有1次或更多的写操作,并且读操作被阻塞,所以这不是一个选项 如果使用多个线程,我迟早会遇到I/O错误(没有这样的设备),因为同时执行的读写操作会发生冲突 锁定或多或少会让我回到单线程的状态,所以不太好 .available()输入流上的返回方法不受支持,因此在执行读取之前,我无法检查是否有可用的内容 因为它不是基于套接字的流
多线程
和安卓开放附件
引起的头痛
我需要与USB附件通信,但我需要从两个线程进行通信。
一个线程生成并发送数据,另一个线程读取数据
- 为什么我不使用单线程?因为在读之前可以有1次或更多的写操作,并且读操作被阻塞,所以这不是一个选项
- 如果使用多个线程,我迟早会遇到
,因为同时执行的读写操作会发生冲突I/O错误(没有这样的设备)
- 锁定或多或少会让我回到单线程的状态,所以不太好
输入流上的.available()
返回方法不受支持,因此在执行读取之前,我无法检查是否有可用的内容
- 因为它不是基于套接字的流,所以我也不能设置超时
- 我已尝试从
获取USBAccessory
,并将其传递到FileDescriptor
进行处理,但在第一次读/写之后,设备变得无法访问JNI
对此,建议/最佳实践方法是什么?我不需要编写代码,我只需要一些关于如何处理这个问题的指导 澄清:
另一端的软件可能会也可能不会响应任何数据。有一些所谓的静默发送是数据发送,它只是接收,但没有确认。由于我正在使用的应用程序只是一个代理,我不清楚数据是否会产生答案。这也需要对数据进行分析,而目前还没有对数据进行分析
谢谢。由于您想同时进行读写操作,如果读写操作在同一部分,那么写操作总是会导致暂停阅读 可能您可以遵循与
ConcurrentHashMap
类似的方法,对不同的段使用不同的锁,如果写入在同一段上,则锁定只读,否则允许读取
这将
你的双线程方法或多或少是我会做的。祝你好运,相信你自己。如果你没有描述你使用的API的限制,你很难给出建议。