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

  • 相关阅读:
    caseStudy-20181216-Kafka(xxx)集群故障&解决办法
    caseStudy-20190312 xxx kafka集群因文件描述符超阀值引起集群不可用
    Kafka客户端二次封装扩展总体设计
    2018年工作规划-Kafka方向OKR
    针对Kafka的centos系统参数优化
    脚本kafka-configs.sh用法解析
    Kafka动态配置实现原理解析
    动态配置实现原理解析参考资料
    Topics类型配置
    Brokers类型配置
  • 原文地址:https://www.cnblogs.com/SamuelSun/p/4019456.html
Copyright © 2011-2022 走看看