线程池demo

来源:互联网 发布:淘宝开店要钱吗 编辑:程序博客网 时间:2024/05/22 15:28
package com.sunc.callableTest;

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

class User {
    private String name;
    private String age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

}

public class ThreadTestB {
    public static void main(String[] args) {
        try {
            ExecutorService e = Executors.newFixedThreadPool(2);
            List<Future<User>> list = new ArrayList<Future<User>>();

            for (int i = 0; i < 10; i++) {
                list.add(e.submit(new MyCallableA(i + "")));
                System.out.println("---------------");
               

            }

//回调填充list(不能省略,可测试注释for循环查看结果)

            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i).get());
            }
            e.shutdown();
            System.out.println("************");
        } catch (InterruptedException e1) {
            e1.printStackTrace();
        } catch (ExecutionException e1) {
            e1.printStackTrace();
        }
    }

}

class MyCallableA implements Callable<User> {
    String name;

    public MyCallableA(String name) {
        this.name = name;
    }

    public User call() throws Exception {
        System.out.println("开始执行Callable");
         User u = new User();
         u.setName(name);
        Thread.sleep(3000);
        return null;
    }

}
0 0
原创粉丝点击