加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Java线程池实现原理与技术,看这一篇就够了

发布时间:2019-04-01 15:09:41 所属栏目:建站 来源:程序员柯南
导读:01.无限制线程的缺点 多线程的软件设计方法确实可以最大限度地发挥多核处理器的计算能力,提高生产系统的吞吐量和性能。但是,若不加控制和管理的随意使用线程,对系统的性能反而会产生不利的影响。 一种最为简单的线程创建和回收的方法类似如下: newThre

3.测试Main方法

  1. public static void main(String[] args) throws InterruptedException { 
  2.        for (int i = 0; i < 1000; i++) { 
  3.            ThreadPool.getInstance().start(new Runnable() { 
  4.                @Override 
  5.                public void run() { 
  6.                    try { 
  7.                        //休眠100ms 
  8.                        Thread.sleep(100); 
  9.                    } catch (InterruptedException e) { 
  10.                        e.printStackTrace(); 
  11.                    } 
  12.                } 
  13.            }); 
  14.        } 
  15.    } 

03ThreadPoolExecutor

为了能够更好地控制多线程,JDK提供了一套Executor框架,帮助开发人员有效地进行线程控制。Executor框架无论是newFixedThreadPool()方法、newSingleThreadExecutor()方法还是newCachedThreadPool()方法,其内部实现均使用了 ThreadPoolExecutor:

  1. public static ExecutorService newCachedThreadPool() { 
  2.         return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 
  3.                                       60L, TimeUnit.SECONDS, 
  4.                                       new SynchronousQueue<Runnable>()); 
  5.     } 
  6.      
  7.     public static ExecutorService newFixedThreadPool(int nThreads) { 
  8.         return new ThreadPoolExecutor(nThreads, nThreads, 
  9.                                       0L, TimeUnit.MILLISECONDS, 
  10.                                       new LinkedBlockingQueue<Runnable>()); 
  11.     } 
  12.      
  13.     public static ExecutorService newSingleThreadExecutor() { 
  14.         return new FinalizableDelegatedExecutorService 
  15.             (new ThreadPoolExecutor(1, 1, 
  16.                                     0L, TimeUnit.MILLISECONDS, 
  17.                                     new LinkedBlockingQueue<Runnable>())); 
  18.     } 

由以上线程池的实现代码可以知道,它们只是对 ThreadPoolExecutor 类的封装。为何 ThreadPoolExecutor 类有如此强大的功能?来看一下 ThreadPoolExecutor 最重要的构造方法。

3.1 构造方法

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读