둘 다 Executor에서 실행할 수 있지만 호출자에게 돌려줄 계약이 다릅니다.
run() · 반환값 없음 · 실행 사건
call() → T · checked exception 가능
완료·값·실패·취소 손잡이
핵심: 값이 필요하면 공유 필드를 만들지 말고 Callable과 Future의 결과 채널을 사용합니다.