zoukankan      html  css  js  c++  java
  • 使用线程池管理线程!

    在单个线程的时候我们可以单个的去开启一个线程

    但是在遇到多并发和你并不知道会开启几个线程的时候这样开启线程会造成线程无法控制的情况

    这个时候需要使用线程池去管理你的线程

    首先感谢作者 Sunzxyong 的博客,侵删

    线程池的种类

    官方给出的线程池有5种

       1 newFixedThreadPool(int nThreads ) :这个方法返回一个固定数量的线程池,线程池中的核心线程数不变

       2、newCachedThreadPool() :这个方法返回一个根据实际情况调整的线程池,即核心线程数量不固定,根据具体情况自动调整

           3 newSingleThreadExecutor()  :只有一个核心线程的线程池,其任务按照FIFO(First in first out 先进先出的规则)执行

           4 newScheduledThreadPool() : 可控制线程定时和周期性执行的线程池

       5 newSingleThreadScheduledExecutor() : 周期性执行线程的核心线程只有一的线程池,而4 可以指定线程数量

    线程池的使用

    通过Executors的工厂方法来获取:

            //初始化线程最大数量为3的线程池
            fixedThreadPool = Executors.newFixedThreadPool(3);

    如上是初始化一个核心线程为3的线程池

    加入线程

    fixedThreadPool.execute(new Runnable){
          @Override
      public void run(){
               //你的耗时任务
      }
    }    

    那么有什么好处呢

          1.减少在创建和销毁线程上所花的时间以及系统资源的开销 
        2.如不使用线程池,有可能造成系统创建大量线程而导致消耗完系统内存以及”过度切换”。

    当然线程池也可以提供自己定制的使用方法,官方给了很多定制的方法,这里就不做赘诉,以后有机会再写

  • 相关阅读:
    取石子(二)
    Nim游戏 之HDU 1850 Being a Good Boy in Spring Festival
    移动字母
    asterisk meetme 会议实现
    asterisk基础学习一
    Asterisk 1.8 sip 协议栈分析
    asterisk dialplan详解
    asterisk chan_sip.c代码分析
    asteirsk 开发指南
    asterisk 基础学习二
  • 原文地址:https://www.cnblogs.com/fengfenghuifei/p/6898284.html
Copyright © 2011-2022 走看看