Thread Exception

package duoxianchenyichang;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

public class Demo {
public static void main(String[] args) {
    ExecutorService executorService = Executors.newFixedThreadPool(1);
    ExecutorService executorService_ = Executors.newFixedThreadPool(5);
    List<Future<String>> list_ = new ArrayList<Future<String>>();
    List<Future<String>> list = new ArrayList<Future<String>>();
    List<String> result = new ArrayList<String>();
    Random random = new Random();
    Future<String> submit = executorService.submit(new Callable<String>() {
        @Override
        public String call() throws Exception {
            int i = 0;
            for(i = 0;i<100;i++) {
                Future<String> submit2 = executorService_.submit(new Callable<String>() {
                    @Override
                    public String call() throws Exception {
                        result.add((random.nextInt(100))+"");
                        Thread.sleep(1000);
                        return "2";
                    }
                });
                list.add(submit2);
                for (Future<String> future : list) {
                    future.get();
                }
            }
            return "1";
        }
    });
    list_.add(submit);
    for (Future<String> fu : list_) {
        try {
            String string = fu.get(3000, TimeUnit.MILLISECONDS);
            System.out.println(string);
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            executorService_.shutdown();
            executorService.shutdown();
        }
    }
    System.out.println(result.toString());
}
}

 

posted @ 2018-08-08 23:10  西湖看雪  阅读(174)  评论(0)    收藏  举报