InputStream.available()
方法的(Oracle)javadoc说明如下:
返回此输入流可以读取(或跳过)的字节数的估计值,而不会在下次调用此输入流的方法时阻塞。下一次调用可能是同一个线程或另一个线程。单个读取或跳过这么多字节不会阻塞,但可以读取或跳过更少的字节......
所以,从概念的角度来看,我会说这个方法不会阻塞是有意义的。否则,在read()
的下一次调用中“不阻止”的目的没有多大意义,因为我们可能会阻止available()
本身。
问题是,在我的公司,我们最近发现了几个阻止available()
方法的Android蓝牙实现,我们不知道这是否是我们应该向供应商报告的错误,或者只是{{1}可以阻止。