zoukankan      html  css  js  c++  java
  • 第9章Java中的线程池

      Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或者并发执行的程序都可以使用线程池。在开发过程中,合理使用线程池能够带来3个好处。

        第一:降低资源消耗

        第二:提高响应速度

        第三:提高线程的可管理性

      9.1 线程池的实现原理

        线程池的主要处理流程,处理流程图如图9-1所示

        

        1)线程池判断核心线程池的线程是否都在执行任务,不是则则创建线程执行任务。如果都在执行任务,则进入下一个流程

        2)判断工作队列满了吗。若没有则加入到队列中,否则进入下个流程

        3)线程池是否处于工作状态,满了交给饱和策略来执行这个任务。

          

         

      源码分析:

        

      

      9.2线程池的使用

        9.2.1线程池的创建      

          new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime,milliseconds,runnableTaskQueue, handler); 
        9.2.2向线程池提交任务
          可以使用两个方法向线程池提交任务,分别未execute()和submit()方法

          execute()方法用于提交不需要返回值的任务,所以无法判断是否被线程池执行成功。

          submit()方法用于提交需要返回值的任务。线程池返回一个future类型的对象,通过future对象可以判断任务是否执行成功,并且可以通过future的get()方法获取返回值,会一直阻塞直到任务完成,而使用get(long timeout,TimeUnit unit)方法则会一直阻塞线程到达一定时间立即返回

       9.2.3线程池的关闭

          shutdown   shutdownNow

       9.2.4 合理配置线程池

  • 相关阅读:
    Redis为什么要自己实现一个SDS
    Redis中的数据结构
    编程题
    设计模式-代理模式
    设计模式-原型模式
    设计模式-工厂模式(简单工厂,工厂方法,抽象工厂)
    Redis基础
    Windows提高_1.4进程通信
    Windows提高_1.3文件操作
    Windows提高_1.2遍历进程、遍历模块
  • 原文地址:https://www.cnblogs.com/helloworldmybokeyuan/p/11753802.html
Copyright © 2011-2022 走看看