Execute the specified callable object on this thread and returns the returned value to the caller. If the execution takes longer time than specified timeout duration, this function throws InterruptedException.