java - 将 System.in 包装在 BufferedInputStream 中可以提高某些 JDK 的性能吗?

标签 java

当使用 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/

相关文章:

java - Visual Basic 6 cmd.exe 编译 - 弹出窗口

java - react native 运行Android错误 "Task :app:javaPreCompileDebug FAILED"

java - 在 Java 中以相同方式处理多个方法中的多个异常的最佳实践

java - 如何从 firebase 读取子数据

java - 如何将数据从数据库传递到 JSF 页面?

java - getJSONObject 在 android 4.3 下抛出 JSONException 但在 android 4.4.2 上工作正常

sorting - 在 ArrayIndexOutOfBoundsException 中对程序执行结果进行排序

java - 旋转碰撞盒并在计算中检测该旋转

java - 使用java重命名文件夹中的所有文件

java - 如何阻止 Maven 弄乱我的目录布局及其属性?