Callable과 Future 개념
기존에 사용되던 Runnable은 실행 결과로 아무것도 반환하지 않는다(void)
만약, 쓰레드 결과로 반환값이 필요하면 Callable을 사용해야 한다
Callable의 결과는 Future 객체에 반환된다
Callable 사용법
// executorService.invokeAll() // executorService.invokeAny()