종료자를 사용하는 것은 위험하고 일반적으로 불필요.
java에서 종료자의 단점
time-critical한 작업을 종료자에서 사용하는 경우 언제 작업이 종료되는지 확인을 하는 것이 불가능.
다른 작업 진행 중에 갑자기 실행되는 경우도 있고 끝까지 종료되지 않는 경우도 발생할 수 있음.
중요한 상태 정보의 경우 종료자에서 갱신하면 안됨.
상태 정보를 제거하는 경우 명시적인 종료 메서드를 하나 정의 하고 이를 사용을 하는 것이 좋음
(종료자 사용시 성능이 급격하게 떨어질 수 있음)
- try finally 구문을 활용
종료자 사용처
1. 명시적 종료 메서드 호출을 잊을 경우 대비하는 안전망으로서의 역할
2. native peer와 연결된 객체를 다룰 때
하위 클래스에서 상위 클래스 종료자를 재정의(override)하면서 상위 클래스 종료자를 호출하지 않는 경우 상위 클래스 종료자는 절대로 호출되지 않음.(전혀 다른 객체로 판별될 수 있음)
요약
자원 반환에 대한 최정적 안전장치를 구현하거나 그다지 중요하지 않은 네이티브 자원을 종료시키려는 것이 아니라면 종료자는 사용하지 말 것.
'More Programmings > Effective Java' 카테고리의 다른 글
규칙 9. equals를 재정의할 때는 반드시 hashCode도 재정의하라. (0) | 2017.12.19 |
---|---|
규칙 8. equals를 재정의할 때는 일반 규약을 따르라 (0) | 2017.12.19 |
규칙 6. 유효기간이 지난 객체 참조는 폐기하라 (0) | 2017.10.09 |
규칙5. 불필요한 객체는 만들지 말라 (0) | 2017.10.09 |
규칙 4. 객체 생성을 막을 때는 private 생성자를 사용하라 (0) | 2017.08.31 |