逛奔的蜗牛

我不聪明,但我会很努力

   ::  :: 新随笔 ::  ::  :: 管理 ::

import java.util.LinkedList;

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;


public class InvokeAllAndAnyTest {

    public static void main(String[] args) throws InterruptedException, ExecutionException {

        ExecutorService pool = Executors.newCachedThreadPool();

        List<Callable<Integer>> tasks = new LinkedList<Callable<Integer>>();

        for (int i = 0; i < 8; ++i) {

            tasks.add(new Printer(i));

        }

        List<Future<Integer>> futures = pool.invokeAll(tasks)// 阻塞直至所有线程计算结束.

        

        System.out.println("...............................................");

        for (Future<Integer> future : futures) {

            System.out.println(future.get());

        }

        

        Integer result = pool.invokeAny(tasks)// 阻塞直至随机一个线程计算结束.

        System.out.println("...............................................");

        System.out.println(result);

        

        pool.shutdown();

    }

}


class Printer implements Callable<Integer> {

    private int id;

    private static final int DELAY = 1000;


    public Printer(int id) {

        this.id = id;

    }


    public Integer call() {

        try {

            int times = 10;

            for (int i = 0; i < times; ++i) {

                System.out.println("Id:" + id + " times:" + i);


                Thread.sleep((int) (DELAY * Math.random()));

            }

        } catch (InterruptedException e) {

        }


        return id;

    }

}


posted on 2009-06-29 13:52 逛奔的蜗牛 阅读(171) 评论(0)  编辑 收藏 引用 所属分类: Java

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理