我经常看到这些方法在Java 9的InputStream
层次结构中未同步。并且想知道如果多个线程运行这些方法会怎样?例如,read(byte b[], int off, int len)
和readNbytes
方法几乎相同,但readNBytes
不同步。为什么呢
最佳答案
同步需要更多的开销,因此如果不需要,则会不必要地降低性能。与您的问题相关的另一个示例是StringBuilder
和StringBuffer
之间的区别。
如果您的输入流有可能被异步关闭,则不应使用readNbytes
。readNbytes
有助于避免大文件的内存问题。在这种情况下,这将使它比readAllBytes
更可取,因为它使您可以轻松地读取文件(或文件的一部分),最多可读取N个字节。