반응형

지연

    규칙 71 - 초기화 지연은 신중하게 하라

    Lazy initialization(초기화 지연)은 필드 초기화를 실제로 그 값이 쓰일 때까지 미루는 것이다. 대부분 초기화 지연의 이유는 초기화의 비용이 증가하고 사용빈도가 특별한 경우에 사용하는 필드에 대해서 그렇게 적용한다. 만약 그렇지 않은 경우에도 초기화 지연을 사용하면 어떨까?이럴 경우 클래스를 초기화하고 객체를 생성하는 비용은 줄이지만 필드 사용 비용은 증가시킨다. 그럼 동기화가 필요한 다중 스레드 환경에서는 초기화 지연은 어떻게 구현해야할까? 생각만 해도 어렵다. 몇가지 방법을 살펴보자.우선 초기화 지연을 사용하지 않고 진행하는 일반적인 초기화는 다음과 같다.1234567891011 public class TestClass { // 일반적인 초기화 기법 // 클래스가 처음 로드될 때 바로 ..

    Java8 람다식의 지연실행 (Lazy Programming)

    지연실행 -> 람다를 이용하면 필요할때만 호출해서 사용할 수 있는 Lazy Programming을 구현 할 수 있다. 기존에 다음과 같이 사용하면 당장 사용하지 않아도 실행이 되는 문제가 있었다. 1234567891011121314151617181920212223public class Heavy { Heavy() { System.out.println("Heavy created"); } } Hodler 클래스 Holder 클래스는 heavy 클래스를 포함하고 있다. public class Holder { public Holder() { System.out.println("Holder created"); } Heavy heavy = new Heavy(); public Heavy getHeavy() { ret..

반응형