我经常看到这些方法在Java 9的InputStream层次结构中未同步。并且想知道如果多个线程运行这些方法会怎样?例如,read(byte b[], int off, int len)readNbytes方法几乎相同,但readNBytes不同步。为什么呢

最佳答案

同步需要更多的开销,因此如果不需要,则会不必要地降低性能。与您的问题相关的另一个示例是StringBuilderStringBuffer之间的区别。

如果您的输入流有可能被异步关闭,则不应使用readNbytes

readNbytes有助于避免大文件的内存问题。在这种情况下,这将使它比readAllBytes更可取,因为它使您可以轻松地读取文件(或文件的一部分),最多可读取N个字节。

08-08 02:07