当使用 System.in 从标准输入读取时,可以用 BufferedInputStream 包装它以提高性能,还是已经缓冲了?
与扫描仪结合使用的示例
Scanner in = new Scanner(System.in);
//or
Scanner in = new Scanner(new BufferedInputStream(System.in));
System.in javadoc没有明确说明是否缓冲。
查看我的 x64 Linux 1.8.0_111 java.lang.System#initializeSystemClass 的源代码表明它是缓冲的。
FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
...
setIn0(new BufferedInputStream(fdIn));
是否有任何平台/jdk 实现,其中 System.in 是无缓冲的并且包装它是有意义的?
最佳答案
快速调试一下:
System.out.println(System.in.getClass());
class java.io.BufferedInputStream
所以不,包装System#in
不会有帮助,因为它已经是一个BufferedInputStream
。这可能取决于操作系统,因为我还没有找到关于 System#in
的 InputStream 始终是什么的实际 JLS/etc 规范。
关于java - 将 System.in 包装在 BufferedInputStream 中可以提高某些 JDK 的性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44471342/