Programming/Java

[Java] try-with-resources 구문을 사용하여 할당한 자원을 자동으로 해제하기

cbw1030 2021. 8. 1. 22:05
반응형

jdk 1.7부터 할당한 자원을 자동으로 해제할 수 있는 try-with-resources 구문이 추가됐다.

 

try-with-resources를 사용하지 않는 경우에는 finally 부분에 작성을 하여 자원을 해제했다.

// try-with-resources 구문을 사용하지 않은 경우
FileInputStream fis = null;

try {
    fis = new FileInputStream("file.txt");
} catch (FileNotFoundException e) {
    e.printStackTrace();
} finally {
    if (fis != null) {
        fis.close();
    }
}

 

try-with-resources 구문을 사용하면 깔끔하게 작성이 가능하다.

try (
    FileInputStream fis2 = new FileInputStream("file.txt");
) {
    // do something
} catch (IOException e) {
    // 에러처리
}

try 옆에 괄호 안에서 자원을 할당하면 해당 자원은 블록 수행 이후 자원이 자동으로 해제된다.

저 문법만 사용하면 무조건 자동으로 해제되는 것이 아니라 AutoCloseable 인터페이스를 구현한 클래스만 해당이 된다.

 

FileInputStreamInputStream 추상 클래스를 상속받고 있다.

InputStreamCloseable 인터페이스를 구현하고 있다.

Closeable 인터페이스AutoCloseable 인터페이스를 상속받고 있다.

 

따라서 위 예제에서 사용한 FileInputStream은 자동으로 자원이 해제될 수 있는 것이다.

반응형