045 Future
February 15, 2024
강의 메모 - Future 구조 및 API - 1, 2, 3 # 개요 # 자바에서 Future 는 비동기 작업의 결과를 나중에 가져올 수 있도록 도와주는 인터페이스이다 Future 는 비동기 작업이 완료되었는지 여부를 확인할 수 있고 조건에 따라 작업을 취소할 수 있으며 작업의 결과를 얻는 방법을 제공한다 Future 는 작업의 결과를 가져올 때까지 블로킹되며 여러 작업을 조합하는 문제, 예외 처리의 어려움 등이 존재하는데 이런 단점을 보완하기 위해 자바 8부터는 CompletableFuture 와 같은 개선된 비동기 도구들이 제공되고 있다 Future & Callable # Future 와 Callable 은 자바에서 비동기 작업을 처리하기 위해 서로 관련된 관계를 가진 클래스들이다 Callable 은 비동기 작업의 실행 내용을 정의하는 인터페이스로서 call() 메서드를 구현하여 작업을 정의하고 작업의 결과를 반환한다 Future 은 Callable 에서 반환한 비동기 작업의 결과를 가져오기 위한 인터페이스로서 작업이 완료될 때까지 결과를 기다리거나 작업이 완료되면 결과를 가져올 수 있다 ExecutorService 의 submit() 메서드는 Callable 을 받아 작업을 실행하고 Future를 반환 한다 구조 # // 작업이 이미 완료되었거나 취소되었거나 다른 이유로 취소할 수 없는 경우 => 아무런 일도 발생하지 않으며 false 를 반환한다 // 작업이 시작되지 않은 경우 => 해당 작업은 실행되지 않으며 true 를 반환한다 // 작업이 이미 시작된 경우 => mayInterruptIfRunning 매개변수에 따라 결정된다 1) mayInterruptIfRunning 파라미터가 true 인 경우 => 해당 작업을 중지시키기 위해 현재 작업을 실행 중인 스레드를 인터럽트 한다. ...