[Close()]

=> Java 코드가 메모리에 생성한 것이 아닌 것과 

작성을 할 때는 사용이 끝나면 사용이 종료 되었다는 것을알려주어야합니다. 


=> 이때 사용되는 메소드 이름은 대부분 close, disconnect, release(자원에 대한 해제, 이거 다썼다 ) 


어떤 문제가 생기는가 ? 


이 이유로 인해서 대부분의 코드가 아래처럼 작성됩니다. 


자원을 사용하는 클래스에 변수를 만들고 null을 대입합니다. 

try를 만들어서 안에서 자원을 사용 

try안에서 클로즈를 할 수 없는 이유는 

클로즈를 하기전에 문제가 발생하면 클로즈를 못함 

그렇기에  finally를 만들어서 finally에서 자원을 해제 합니다. 



클래스 s =  null;


try{


}catch(Exception e ) {


System.out.println("예외" + e.getMessage());


}finally {


try {

if (ois != null) {

// 종료

s.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

  }

}






**AutoCloseable 인터페이스 

- java 1.7 에서부터 사용됨 

=> 일정시간동안 사용하지 않으면, 자동으로 Close 해주는 메소드를 소유한 인터페이스

이 인터페이스가 implements 클래스는 close()하지 않아도 자동으로 연결해제 됩니다. 



[사용방법]


**try ~ with ~ Resourece

//괄호 안에서 생성한 객체는 예외가 발생하지 않으면 try 끝에서 close()를 호출하고 

//예외가 발생하면, 즉시 close()를 부릅니다. 

try(객체생성 ){

}

catch(    ) {  } 





버퍼가 출력되지 못한 상태에서 프로그램이 종료되버리면, 끝까지 데이터가 출력되지 못할 수 도 있다. 

그러므로 Close() 호출해주어서 버퍼에 남아있던 모든 내용이 출력되도록해주어야한다.

+ Recent posts