首页 > 学院 > 开发设计 > 正文

线程与线程池,实例比较。

2019-11-15 00:41:07
字体:
来源:转载
供稿:网友
线程与线程池,实例比较。

线程池:

int count = 200000;        long startTime = System.currentTimeMillis();        final List<Integer> l = new LinkedList<Integer>();        ThreadPoolExecutor tp = new ThreadPoolExecutor(1, 1, 60, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(count));        final Random random = new Random();        for (int i = 0; i < count; i++) {            tp.execute(new Runnable() {                                @Override                public void run() {                    l.add(random.nextInt());                }            });        }        tp.shutdown();        try {            tp.awaitTermination(1, TimeUnit.DAYS);        } catch (InterruptedException e) {            e.PRintStackTrace();        }        System.out.println(System.currentTimeMillis() - startTime);        System.out.println(l.size());

输出结果:

1 1722 200000

线程:

int count = 200000;        long startTime = System.currentTimeMillis();        final List<Integer> l = new LinkedList<Integer>();        final Random random = new Random();        for (int i = 0; i < count; i++) {            Thread thread = new Thread(){                @Override                public void run(){                    l.add(random.nextInt());                }            };            thread.start();            try {                thread.join();            } catch (InterruptedException e) {                e.printStackTrace();            }        }        System.out.println(System.currentTimeMillis() - startTime);        System.out.println(l.size());

输出结果:

1 335562 200000

总结:差异在于线程池是复用线程的,而不使用线程池是每次都要去创建线程。线程中执行工作很简单,创建线程的开销占整个时间的比例较大。

复制去Google翻译翻译结果
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表