본문 바로가기
TIL

TIL내일배움캠프 try-with-resources

by 율량동박씨 2024. 7. 29.

오늘의 키워드

  • try-with-resources

오늘의 내용

  • try-with-resources란?
    • 자원을 명시적으로 닫은 필요 없이 자동으로 닫아주는 구조는 제공하는 기능이다. 주로 파일 입출력과 DB연결에 사용되며 자원을 할당하고 해제하는 코드가 더 간결하고 안전해지는 장점이 있다
try (BufferedReader br = new BufferedReader(new FileReader("path/to/file.txt"))) {
    String line;
    while ((line = br.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}
    • 다중 자원 사용 시 예제
      • try블록 안에 여러 자원을 선언하면 모두 자동으로 닫힌다
try (
    BufferedReader br = new BufferedReader(new FileReader("path/to/file.txt"));
    BufferedWriter bw = new BufferedWriter(new FileWriter("path/to/output.txt"))
) {
    String line;
    while ((line = br.readLine()) != null) {
        bw.write(line);
        bw.newLine();
    }
} catch (IOException e) {
    e.printStackTrace();
}
  • AutoCloseable 인터페이스
    • try-with-resources를 사용하려면 해당 클래스가  AutoCloseable 인터페이스를 구현해야하고 AutoCloseable 인터페이스는 close( ) 메서드를 가지고 있어 자원을 닫을 때 호출된다. 
public class CustomResource implements AutoCloseable {
    public void doSomething() {
        System.out.println("Doing something with the resource");
    }

    @Override
    public void close() {
        System.out.println("Resource closed");
    }
}

public class Main {
    public static void main(String[] args) {
        try (CustomResource resource = new CustomResource()) {
            resource.doSomething();
        }
    }
}

오늘의 회고

 최종 프로젝트 기능을 구현하면서 코드 실행 시간 측정을 구현하면서 각 핸들러를 나누면서 자원관리를 하는 방법을 찾아보다가 try-with-resources문을 찾아보게 되었고 여러 자원을 다룰 때 유용해서 다음에도 적극적으로 사용해 볼 예정이다.