try-with-resources
-
Java 9. 주요 변경 내용 (1)BackEnd/Java 2024. 12. 3. 22:00
try-with-resources 확장 try-with-resources는 Java 7에서 추가된 기능으로 개발자가 직접 닫아줘야 하는 자원을 try() 안에 선언하면, try 로직이 끝난 후 자동으로 해당 자원을 닫아주는 것입니다. 자동으로 해당 자원을 닫아주기 위해서는 AutoCloseable을 구현하고 있어야 합니다. Java 7 이전 코드Resource resource = new Resource();try { // 작업} finally { resource.close();} Java 7 이후 코드try (Resource resource = new Resource()) { // 작업} Java 7의 try-with-resources의 경우, try() 밖에서 만든 자원을 닫을 수는 없습니다..
-
Item 9. try-finally보다는 try-with-resources를 사용하라Book/Effective Java 3E 2022. 10. 13. 08:30
자바 라이브러리에는 close 메서드를 호출해 직접 닫아줘야 하는 자원이 많습니다. InputStream, OutputStream, java.sql.Connection 등이 좋은 예입니다. 자원 닫기는 클라이언트가 놓치기 쉬워서 예측할 수 없는 성능 문제로 이어지기도 합니다. 이런 자원 중 상당수가 안전망으로 finalizer를 활용하고 있지만 finalizer는 그리 믿을만하지 못합니다(Item 8). 전통적으로 자원이 제대로 닫힘을 보장하는 수단으로 try-finally가 쓰였습니다. 예외가 발생하거나 메서드에서 반환되는 경우를 포함해서 말입니다. package effectivejava.chapter2.item9.tryfinally; import java.io.BufferedReader; import..
-
Item 8. finalizer와 cleaner 사용을 피하라Book/Effective Java 3E 2022. 10. 13. 08:00
자바는 두 가지 객체 소멸자를 제공합니다. 다만, 두 가지 객체 소멸자 모두 예측할 수 없고, 일반적으로 불필요합니다. finalizer: 자바 9 deprecated API 지정. cleaner를 대안으로 소개. cleaner: 자바 9부터 지원하는 객체 소멸자. finalizer와 cleaner는 즉시 수행된다는 보장이 없습니다.[JLS, 12.6] 즉, finalizer와 cleaner로는 제때 실행되어야 하는 작업은 절대 할 수 없습니다. 자바 언어 명세는 finalizer나 cleaner의 수행 시점뿐 아니라 수행 여부조차 보장하지 않습니다. 따라서 프로그램 생애주기와 상관없는, 상태를 영구적으로 수정하는 작업에서는 절대 finalizer나 cleaner에 의존해서는 안 됩니다. 또한, fina..