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

    今天做了一个需求要求登录系统后记录所有人的所有操作,由于该类型操作任务量小但是却很多,所以想到了用线程池,实现异步操作,避免同步操作影响性能。选择了spring的线程池基于xml配置文件进行配置。线程数和队列项目实际情况进行配置
    Java提供了4钟线程池:
      newCachedThreadPool
    特性:
    • 它是一个可以无限扩大的线程池;
    • 它比较适合处理执行时间比较小的任务(只有任务小,线程数比较多才能复用);
    • corePoolSize为0,maximumPoolSize为无限大,意味着线程数量可以无限大;
    • keepAliveTime为60S,意味着线程空闲时间超过60S就会被杀死;
    • 采用SynchronousQueue装等待的任务,这个阻塞队列没有存储空间,这意味着只要有请求到来,就必须要找到一条工作线程处理他,如果当前没有空闲的线程,那么就会再创建一条新的线程。
      newFixedThreadPool
    特性:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待
     
      newSingleThreadExecutor
    特性:
    • 它只会创建一条工作线程处理任务;
    • 采用的阻塞队列为LinkedBlockingQueue
      newScheduledThreadPool
    特性:支持定时及周期性任务执行
     
    spring提供了一个threadPoolTaskExecutor 线程池
    需要关注,线程数,队列类型,拒绝策略
     
    这几篇文章讲解的比较好:
     
     
  • 相关阅读:
    C++ 四种cast 用法
    Wannafly挑战赛1 B Xorto
    python里的闭包
    编译器对类的编译顺序
    class和struct
    typedef类型别名
    decltype类型指示符
    左值和右值
    const限定符
    hdu5678 树上第k小
  • 原文地址:https://www.cnblogs.com/ljy-skill/p/11013220.html
Copyright © 2011-2022 走看看