본문 바로가기

책/모던 자바 인 액션

16장 CompletableFuture: 안정적 비동기 프로그래밍

16.1 Future의 단순 활용

  • 자바 5부터는 미래의 어느 시점에 결과를 얻는 모델에 활용할 수 있도록 Future 인터페이스를 제공하고 있다.
  • 결과가 준비되었다면 즉시 결과를 반환하지만 결과가 준비되지 않았다면 작업이 완료될때 까지 우리 스레드를 블록시킨다.
  • get 메서드를 오버로드해서 우리 스레드가 대기할 최대 타임아웃 시간을 설정하는 것이 좋다.
  • 비동기 API에서는 메서드가 즉시 반환되며 끝내지 못한 나머지 작업을 호출자 스레드와 동기적으로 실행될 수 있도록 다른 스레드 에 할당한다.

16.2 비동기 APU 구현

  • Future는 결과값의 핸들일 뿐이며 계산이 완료되면 get 메서드로 결과를 얻을 수 있다.
  • 가격 정보가 있으면 Future에서 가격 정보를 읽고, 가격정보가 없으면 가격 정보를 받을때까지 블록한다.
  • 클라이언트는 타임아웃값을 받는 get 메서드의 오버로드 버전을 만들어 이 문제를 해결할 수 있다.

16.4 비동기 작업 파이프라인 만들기

  • 병렬 스트림에서는 스트림이 사용하는 스레드 풀의 크기가 고정되어 있어서 상점 수가 늘어났을 때처럼 검색 대상이 확장되었을 때 유연하게 대응할 수 없다는 사실도 확인했다.