zoukankan      html  css  js  c++  java
  • java 线程池

    keepAliveTime:如果池中当前有多于 corePoolSize 的线程,则这些多出的线程在空闲时间超过 keepAliveTime 时将会终止。

    红色字说明了下面两个方法返回值的区别。

    getPoolSize():只要池中出现了大于等于corePoolSize 数量的线程,则该方法的返回值就不会小于corePoolSize 。

    getActiveCount():该方法的返回值可以等于0。

    在池中出现了大于等于corePoolSize 数量的线程后,线程池中至少会持有corePoolSize 数量的线程。

    上面两个值在池中线程不断增多的时候是相等的,但是在线程不断减少的时候(空闲并超过keepAliveTime),前者最小能够降到corePoolSize ,而后者最小能够降到0

    (转)isShutdown()isTerminated()是有区别的

    我们可以通过调用线程池的shutdown或shutdownNow方法来关闭线程池,它们的原理是遍历线程池中的工作线程,然后逐个调用线程的interrupt方法来中断线程,所以无法响应中断的任务可能永远无法终止。但是它们存在一定的区别,shutdownNow首先将线程池的状态设置成STOP,然后尝试停止所有的正在执行或暂停任务的线程,并返回等待执行任务的列表,而shutdown只是将线程池的状态设置成SHUTDOWN状态,然后中断所有没有正在执行任务的线程。

    只要调用了这两个关闭方法的其中一个,isShutdown方法就会返回true。当所有的任务都已关闭后,才表示线程池关闭成功,这时调用isTerminaed方法会返回true。至于我们应该调用哪一种方法来关闭线程池,应该由提交到线程池的任务特性决定,通常调用shutdown来关闭线程池,如果任务不一定要执行完,则可以调用shutdownNow。

    参考

    http://www.cnblogs.com/dolphin0520/p/3932921.html

  • 相关阅读:
    helix matrix 螺旋矩阵
    利用基数排序生成100个1000以内顺序排列的随机数
    第三次随笔
    gSoap: How to add info to SOAP Header using gSOAP(转)
    sizeof empty class object
    C++基础回顾字符串地址比较
    (转)RVA相对虚拟地址解释
    团队建设历史经验回顾
    C++全局变量的生老病死
    C++基础回顾强制类型转换
  • 原文地址:https://www.cnblogs.com/SamuelSun/p/4019456.html
Copyright © 2011-2022 走看看