public void comeNewCustomer( Customer newCustomer) {
        // ここでは異なる種類の自販機を選択肢としておきたいため、ワイルドカード指定
        ImmutableList<? extends VendingMachine<?>> machineList = ImmutableList.of( //
            new DrinkVendingMachine( newCustomer.getIOManager()), //
            ReturnTicketVendingMachine.INSTANCE //
            );

        ExecutorService service = Executors.newCachedThreadPool();

        try {
            while ( true) {
                VendingMachine<?> selected = newCustomer.getIOManager() //
                    .select( Message.PLEASE_SELECT_VENDING_MACHINE, machineList);

                if ( selected == ReturnTicketVendingMachine.INSTANCE) {
                    break;
                }

                Future<Customer> future = service.submit( selected);

                newCustomer.getIOManager() //
                    .writeln( Message.INTRODUCE_SELECTED_MACHINE_FORMAT, selected);
                selected.comeNewCustomer( newCustomer);

                Customer customer = future.get();

                customer.showResult();
            }
        }
        catch ( InterruptedException e) {
            e.printStackTrace();
        }
        catch ( ExecutionException e) {
            e.printStackTrace();
        }
        finally {
            service.shutdown();
        }
    }