比如下面的类少了in.close();这个语句会发生什么后果?还有,我这个方法写对吗?public class ConnectServer {
public boolean isAppInit() {
boolean appInit=true;
URL myURL;
try {
myURL = new URL("http://www.sifg.com.cn/index.jsp");
InputStream is = myURL.openStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
if((in.readLine()) == null) {
appInit=false;
return false;
}
in.close();
} catch (MalformedURLException e) {
System.out.println("服务器连接没有启动");
return false;
}catch(IOException e1){
System.out.println("读取服务器URL出现错误");
return false;
}
return appInit;
}
}
public boolean isAppInit() {
boolean appInit=true;
URL myURL;
try {
myURL = new URL("http://www.sifg.com.cn/index.jsp");
InputStream is = myURL.openStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
if((in.readLine()) == null) {
appInit=false;
return false;
}
in.close();
} catch (MalformedURLException e) {
System.out.println("服务器连接没有启动");
return false;
}catch(IOException e1){
System.out.println("读取服务器URL出现错误");
return false;
}
return appInit;
}
}
没有关闭简单来说的后果就是:该资源还是被占用着,没有释放,如果再来一个请求,
就会抛出RuntimeExcetion.
close()方法的作用是释放资源!
把对象设为NULL,让垃圾回收机来回收!
修正一下。如果 FileInputStream 对象满足了垃圾回收条件,JVM 会调用其 finalize(),从而调用 close() 关闭文件。不过,还是那个原则:要主动控制,不要寄希望于系统的自动回收。