线程池介绍

1.定义

    线程池是一种多线程处理形式,处理过程中将任务添加 到队列,然后在创建线程后自动启动这些任务。

2.作用    

   线程池的作用是限制系统中执行线程的数量。

   根据系统的环境情况,可以手动或是自动设置线程数量,达到运行的最佳效果。既不会浪费系统资源,还避免了系统拥挤。用线程池控制线程的数量,其他线程排队等候。一个任务执行完毕,再从队列中取最前面的任务进行执行。若队列中没有等待线程,则线程池资源进行等待

3.使用原因

    1>减少创建和销毁线程的次数,每个线程都可以被重复利用,可执行多个任务。

    2>可以根据系统的承受力,调整线程池中工作线程的数目,防止因为消耗过多的内存,而挂掉服务器。

4.结构

   顶级接口Executor ---->这个接口代表执行者,是典型的命令模式的应用。接口中唯一方法:execute(Runnable)

                       --------ExecutorService    ---->真正线程池接口

            
         我们经常使用的线程池是ThreadPoolExecutor ,

         ForkJoinPool是JDK7新增的线程池,解决计算机多核问题,解决并行问题,其他两个解决并发问题

         ScheduledThreadPoolExecutor比ExecutorService新增了“延时”和“周期执行”的功能。

5.使用

    Executors是线程池的工厂类,提供了一些列静态方法,用于创建各种不同功能的线程池或线程对象。

    1>newCachedThreadPool()    具有缓存功能的线程池 ,系统根据需要创建线程,线程被缓存在线程池中。

    2>newFixedThreadPool(int nThreads)  固定线程数的线程池

    3>newSingleThreadPool()  单线程的线程池

    4>newScheduledThreadPool()   指定数目的线程池,可以指定延时后执行任务

    5>newSingleThreadScheduledPool()  单线程池,可延时执行

6.状态

    RUNNING:能接收新任务。

    SHUTDOWN:不接受新任务,但是可以处理已添加的任务。

    STOP:不接收新任务,中断正在处理的任务。 

    TIDYING:当所有任务已终止,线程池会变为此状态。然后执行terminated()

    TERMINATED:线程彻底状态。    



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值