AutoCloseable
을 구현해주고,close
메서드를 호출한다.public class TestResource implements AutoCloseable {
@Override
public void close() throws RuntimeException {
System.out.println("close");
}
public void hello() {
System.out.println("hello");
}
}
-------------------------------------------------------------
public class TestRunner {
public static void main(String[] args) {
try {
TestResource resource = new TestResource();
resource.hello(); // 리소스 사용
} finally {
resource.close(); // 리소스를 사용하는 쪽에서 쓴 다음 반드시 정리. close() 호출
}
}
}
finalize
, cleaner
를 이용하여, 자원을 종료하는 방법은 옳은 방법이 아니다. Autoclosable
을 구현해 주고, try-with-resource
사용을 지향하자. try-with-resource
는 안전하게 리소스를 종료해주는 것 이외에도 가독성이 좋은 코드를 작성할 수 있다는 장점이 있다.