반응형 이펙티브자바2 finalizer와 cleaner 사용을 피하라 finalizer와 cleaner 사용을 피하라 자바의 객체 소멸자 1. finalizer (자바 8까지) 예측 불가능하고, 상황에 따라 위험할 수도 있어 일반적으로 불필요 2. cleaner (자바 9~) finalizer보다는 덜 위험하지만 마찬가지로 예측 불가능, 느림, 일반적으로 불필요하다. 어째서 불필요한지? 1. finalizer와 cleaner는 즉시 수행된다는 보장이 없다. 즉, 두 가지로는 제때 실행되어야 하는 작업은 절대할 수 없다. ex) 파일 닫기의 경우, 동시에 열 수 있는 파일 개수에 한계가 있기 때문에, finalizer나 cleaner가 제 때 실행되지 않는다면, 새로운 파일을 열지 못하게 될 수 있다. 2. 수행 여부를 보장하지 않는다. 접근할 수 없는 일부 객체에 딸린 종.. 2022. 3. 22. 스트림 병렬화는 주의해서 적용하라 자바 8부터 parallel 메서드만 한 번 호출하면 파이프라인을 병렬 실행할 수 있는 스트림을 지원한다. 이 병렬 실행을 올바르게 사용하는 방법을 알아보자. import static java.math.BigInteger.ONE; import static java.math.BigInteger.TWO; import java.math.BigInteger; import java.util.stream.Stream; // 스트림을 사용해 처음 20개의 메르센 소수를 생성하는 프로그램 public class Main { public static void main(String[] args) { primes().map(p -> TWO.pow(p.intValueExact()).subtract(ONE)) .filter(m.. 2022. 3. 12. 이전 1 다음 반응형