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

    ​​java通过Executors提供四种线程池,分别为:

    1).newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过了处理需要,可灵活回收空闲线程,若无可回收,则创建线程.

    2).newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待.

    3).newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行.

    4).newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证多有任务按制定顺序(FIFO,LIFO,优先级)执行.

     5)forkjoinpool

     

    poolSize:线程池中当前线程的数量。

    那么poolSize、corePoolSize、maximumPoolSize三者的关系是如何的呢?

    当新提交一个任务时:
    (1)如果poolSize<corePoolSize,新增加一个线程处理新的任务。
    (2)如果poolSize=corePoolSize,新任务会被放入阻塞队列等待。
    (3)如果阻塞队列的容量达到上限,且这时poolSize<maximumPoolSize,新增线程来处理任务。
    (4)如果阻塞队列满了,且poolSize=maximumPoolSize,那么线程池已经达到极限,会根据饱和策略RejectedExecutionHandler拒绝新的任务。

    所以通过上面的描述可知corePoolSize<=maximumPoolSize,poolSize<=maximumPoolSize;而poolSize和corePoolSize无法比较,poolSize是有可能比corePoolSize大的。



    spring有内置的线程池

    TaskExecutor---Spring异步线程池的接口类,其实质是java.util.concurrent.Executor

  • 相关阅读:
    nginx配置跨域问题
    几个经典的TCP通信函数
    表达格式和数值格式的转换
    主机字节序与网络字节序的转换
    一对经典的时间获取客户/服务器程序
    关于TIME_WAIT状态
    一个经典的比喻( 关于TCP连接API )
    《UNIX 网络编程 第二版》编译环境的搭建( 运行本专栏代码必读 )
    简述C++中的多态机制
    最佳谓词函数 --- 函数对象
  • 原文地址:https://www.cnblogs.com/zj-xu/p/12061498.html
Copyright © 2011-2022 走看看