`
flychao88
  • 浏览: 743571 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

线程池在任何场景下都比顺序执行快吗??

 
阅读更多

有时候并不是在任何场景下使用线程池,效率都比顺序执行程序快,请看下面例子程序:

 

这是使用线程池程序。

 ThreadPoolExecutor threadPool = new ThreadPoolExecutor(CORE_POOL_SIZE, MAX_POOL_SIZE,
                KEEP_ALIVE_TIME, TimeUnit.SECONDS, nocardTaskQueue);
        threadPool.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

        long threadStartTime = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            Future future = threadPool.submit(new TestRunnable());
            try {
                future.get(1000, TimeUnit.SECONDS);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        long threadEndTime = System.currentTimeMillis();
        System.out.println("采用线程池处理:" + (threadEndTime - threadStartTime));

 

这是顺序执行程序:

 long objectStartTime = System.currentTimeMillis();
        for (int i = 0; i < 1000; i++) {
            TestRunnable tt = new TestRunnable();
            tt.run();
        }
        long objectEndTime = System.currentTimeMillis();
        System.out.println("采用普通类处理:" + (objectEndTime - objectStartTime));

 

 

执行结果是:

  • 大小: 17.8 KB
分享到:
评论
2 楼 flychao88 2015-07-03  
kensou97 写道
线程池节省的是频繁创建和销毁线程带来的开销吧...我不觉得这个例子有任何参考价值...


在实际工作中,很多人用线程池提高程序的并行度,其实就是提升处理速度,有时候不能够合理使用,就会产生速度并不如顺序执行好,你说的这些话也没问题,我这个例子只是强调合理这个词,有没有参考价值,这个不同的人有不同的理解吧
1 楼 kensou97 2015-07-02  
线程池节省的是频繁创建和销毁线程带来的开销吧...我不觉得这个例子有任何参考价值...

相关推荐

Global site tag (gtag.js) - Google Analytics