future는 결과를 받는 쪽의 핸들입니다. 시작을 누가
하는지, 값을 누가 채우는지, 실행을 누가 제어하는지에 따라 도구가
달라집니다.
호출 가능한 작업을 실행하고 반환값이나 예외를
future로 받습니다.
생산자 스레드가 나중에 값을 채우고 소비자는 연결된
future로 기다립니다.
작업과 future를 연결하되 실행 스레드와 호출 시점을
직접 정합니다.