Java为什么“ readAllBytes”和“ readNBytes”方法不同步?

时间:2018-07-06 17:12:30

标签: java io stream

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

1 个答案:

答案 0 :(得分:1)

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

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

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