본문 바로가기
Language/Java

Future<T> submit(Runnable task, T result)는 무엇을 리턴하나?

by fabxoe 2019. 8. 31.

이것이 자바다 - 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()메소드는 리턴값을 갖지 않지만 

당연스럽게도 간단히 외부객체에 값을 대입하는 코드를

작성하는 것으로 외부객체에 데이터를 담을 수 있다.

댓글