java编程思想笔记---并发Callable接口

来源:互联网 发布:上海网络教育医学院 编辑:程序博客网 时间:2024/05/18 00:10
public class TasksWithResult implements Callable<String> {    private int id;    public TasksWithResult(int id){        this.id=id;    }    //返回结果数据    @Override    public String call() throws Exception {        return "result:"+id;    }    public static void main(String[] args) {        ExecutorService exec=Executors.newCachedThreadPool();        List<Future<String>>results=new ArrayList<Future<String>>();        for (int i = 0; i < 10; i++) {            //使用exec.submit方法调用            results.add(exec.submit(new TasksWithResult(i)));        }        for (Future<String> future : results) {            try {                //检查任务是否已经完成                if (future.isDone()) {                    //调用get方法时,如果结果没有就绪,当前线程会阻塞,直至结果就绪                    System.out.println(future.get());                }            } catch (InterruptedException e) {                e.printStackTrace();            } catch (ExecutionException e) {                e.printStackTrace();            }        }    }}

//callable示例:从每个任务中返回线程的睡眠时间

public class SleepTask implements Callable<String> {    String name;    public SleepTask(String name){        this.name=name;    }    @Override    public String call(){        Random random=new Random();        int time=random.nextInt(100);        try {            TimeUnit.MILLISECONDS.sleep(time);        } catch (InterruptedException e) {            e.printStackTrace();        }        return name+":"+time;    }    public static void main(String[] args) {        ExecutorService exec=Executors.newCachedThreadPool();        List<Future<String>>futures=new ArrayList<Future<String>>();        for (int i = 0; i < 10; i++) {            futures.add(exec.submit(new SleepTask("thread-"+(++i))));        }        for (Future<String> future : futures) {            try {                System.out.println(future.get());            } catch (InterruptedException | ExecutionException e) {                e.printStackTrace();            }        }    }}
原创粉丝点击