이것이 자바다 - 12장 멀티스레드 - 리턴값이 있는 작업 완료 통보
책에서 Runable은 작업에 리턴값이 없을때 사용하고, Callable은 작업에 리턴값이 있을 때 사용한다고 한다.
submit(Runnable task) | future.get() -> null | future.get() -> 예외 발생 |
submit(Runnable task, Integer result) | future.get() -> Integer 타입 값 | future.get() -> 예외 발생 |
submit(Callable<String > task) | future.get() -> String 타입 값 | future.get() -> 예외 발생 |
그러나 책에서 제공하는 위의 표에 가운데에 있는 있는 submit은 Runnable임에도 불구하고
두번째 파라미터가 result인데 Runnable이 작업에 리턴값이 없을때 사용한다는 말과 어울리지 않아 보인다.
이 파라미터의 result는 정확히 무엇인가?
조금만 뒤의 내용을 보면 알 수 있었다.
submit(Runnable task, Integer result)의 두번째 파라미터는
작업 처리 결과를 외부객체에 취합하는 형태로 활용할때
외부객체를 지정해주는 용도로 사용된다.
Runnable의 run()메소드는 리턴값을 갖지 않지만
당연스럽게도 간단히 외부객체에 값을 대입하는 코드를
작성하는 것으로 외부객체에 데이터를 담을 수 있다.
'Language > Java' 카테고리의 다른 글
LOG4J2와 로깅 라이브러리 (0) | 2020.06.11 |
---|---|
얕은 복사를 피하기 위해서 참조객체는 clone을 재구현해야 한다? (0) | 2019.10.21 |
타입파라미터를 제한하는 방법은 두가지이다. (0) | 2019.09.02 |
Thread상태상수인 WAITING, BLOCKED와 상태제어 메소드인 wait()과 notify()의 관계 (0) | 2019.09.01 |
CompletionService의 take()의 용도 (0) | 2019.08.30 |
댓글