设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 重新 试卷 文件
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

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

发布时间:2019-04-01 12:30 所属栏目:21 来源:程序员柯南
导读:3.测试Main方法 publicstaticvoidmain(String[]args)throwsInterruptedException{ for(inti=0;i1000;i++){ ThreadPool.getInstance().start(newRunnable(){ @Override publicvoidrun(){ try{ //休眠100ms Thread.sl

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 构造方法

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读