W
www
Hi,
I am reading Sun's tutorial
page.(http://java.sun.com/developer/technicalArticles/Programming/PerfTuning/)
<Quote>
....
Another aspect of buffering concerns text output to a terminal window.
By default, System.out (a PrintStream) is line buffered, meaning that
the output buffer is flushed when a newline character is encountered.
This is important for interactivity, where you'd like to have an input
prompt displayed before actually entering any input.
Approach 5: Disabling Line Buffering
But line buffering can be disabled, as in this example:
import java.io.*;
public class bufout {
public static void main(String args[]) {
FileOutputStream fdout =
new FileOutputStream(FileDescriptor.out);
BufferedOutputStream bos =
new BufferedOutputStream(fdout, 1024);
PrintStream ps =
new PrintStream(bos, false);
System.setOut(ps);
final int N = 100000;
for (int i = 1; i <= N; i++)
System.out.println(i);
ps.close();
}
}
This program writes the integers 1..100000 to the output, and runs about
three times faster than the default equivalent that has line buffering
enabled.
</Quote>
The above code really bring me to trouble. Particularly, ps.close() does
strange thing. It seems to shut down my JVM or other similar end result.
All the code after ps.close() will not be reached. For example, I have
added the code:
ps.close()
System.setOut(System.out);
System.out.println("hello"); //never reach here
Thank you for your help.
I am reading Sun's tutorial
page.(http://java.sun.com/developer/technicalArticles/Programming/PerfTuning/)
<Quote>
....
Another aspect of buffering concerns text output to a terminal window.
By default, System.out (a PrintStream) is line buffered, meaning that
the output buffer is flushed when a newline character is encountered.
This is important for interactivity, where you'd like to have an input
prompt displayed before actually entering any input.
Approach 5: Disabling Line Buffering
But line buffering can be disabled, as in this example:
import java.io.*;
public class bufout {
public static void main(String args[]) {
FileOutputStream fdout =
new FileOutputStream(FileDescriptor.out);
BufferedOutputStream bos =
new BufferedOutputStream(fdout, 1024);
PrintStream ps =
new PrintStream(bos, false);
System.setOut(ps);
final int N = 100000;
for (int i = 1; i <= N; i++)
System.out.println(i);
ps.close();
}
}
This program writes the integers 1..100000 to the output, and runs about
three times faster than the default equivalent that has line buffering
enabled.
</Quote>
The above code really bring me to trouble. Particularly, ps.close() does
strange thing. It seems to shut down my JVM or other similar end result.
All the code after ps.close() will not be reached. For example, I have
added the code:
ps.close()
System.setOut(System.out);
System.out.println("hello"); //never reach here
Thank you for your help.