关闭读取字符串的扫描仪
Closing a Scanner that reads a String
我有这段代码(我可以很大):
for (int i = 0; i < 100_000_000; i++) {
Scanner scanner = new Scanner("Some String");
//do some stuff with the scanner
scanner.close(); //needed?
}
这种情况下是否需要调用.close()
方法?从performance/resources来看。
Scanner
使用StringReader
读取输入字符串
这是可能的 StringReader.close()
实施方式
public void close() {
str = null;
}
close
之后的任何 read
调用都会抛出异常。
因此,从性能的角度来看,除非引用有一个大字符串并且在活动线程的视野中保持更长的持续时间,否则它应该是最小的。
但是,如果代码依赖于消息传递(通过触发异常)使用 Scanner
的共享实例到代码的其他部分(例如,代码流不检查 -1
并且仍然在共享实例上重复调用 read
),那么它将有不同的行为
我有这段代码(我可以很大):
for (int i = 0; i < 100_000_000; i++) {
Scanner scanner = new Scanner("Some String");
//do some stuff with the scanner
scanner.close(); //needed?
}
这种情况下是否需要调用.close()
方法?从performance/resources来看。
Scanner
使用StringReader
读取输入字符串
这是可能的 StringReader.close()
实施方式
public void close() {
str = null;
}
close
之后的任何 read
调用都会抛出异常。
因此,从性能的角度来看,除非引用有一个大字符串并且在活动线程的视野中保持更长的持续时间,否则它应该是最小的。
但是,如果代码依赖于消息传递(通过触发异常)使用 Scanner
的共享实例到代码的其他部分(例如,代码流不检查 -1
并且仍然在共享实例上重复调用 read
),那么它将有不同的行为