Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在BufferedInputStream中包装System.in是否可以提高某些JDK';s_Java - Fatal编程技术网

Java 在BufferedInputStream中包装System.in是否可以提高某些JDK';s

Java 在BufferedInputStream中包装System.in是否可以提高某些JDK';s,java,Java,当使用System.in读取标准输入时,使用BufferedInputStream对其进行包装是否可以提高性能,或者它是否已经被缓冲 与扫描仪结合使用时的示例 Scanner in = new Scanner(System.in); //or Scanner in = new Scanner(new BufferedInputStream(System.in)); 没有显式说明它是否已缓冲 查看我的x64 Linux 1.8.0_111 java.lang.System#initializeS

当使用System.in读取标准输入时,使用BufferedInputStream对其进行包装是否可以提高性能,或者它是否已经被缓冲

与扫描仪结合使用时的示例

Scanner in = new Scanner(System.in);
//or
Scanner in = new Scanner(new BufferedInputStream(System.in));
没有显式说明它是否已缓冲

查看我的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());
类java.io.BufferedInputStream


因此,将
系统包装在
中不会有帮助,因为它已经是一个
缓冲的输入流。这可能取决于操作系统,因为我还没有找到一个实际的JLS/etc规范来说明
中的
系统的输入流将始终是什么。

会有什么影响吗?很可能不是

会有帮助吗?视情况而定,但可能不是


请记住,操作系统在这里也有发言权。永远不要忘记JVM只是整个组件堆栈中的一层。换句话说:你的Linux内核可能在幕后做着各种各样的事情——所以你的应用程序代码在这里做什么并不重要

这要看情况而定。你打字有多快?