java 线程池

今天作了一个需求要求登陆系统后记录全部人的全部操做,因为该类型操做任务量小可是却不少,因此想到了用线程池,实现异步操做,避免同步操做影响性能。选择了spring的线程池基于xml配置文件进行配置。线程数和队列项目实际状况进行配置
Java提供了4钟线程池:
  newCachedThreadPool
特性:
  • 它是一个能够无限扩大的线程池;
  • 它比较适合处理执行时间比较小的任务(只有任务小,线程数比较多才能复用);
  • corePoolSize为0,maximumPoolSize为无限大,意味着线程数量能够无限大;
  • keepAliveTime为60S,意味着线程空闲时间超过60S就会被杀死;
  • 采用SynchronousQueue装等待的任务,这个阻塞队列没有存储空间,这意味着只要有请求到来,就必需要找到一条工做线程处理他,若是当前没有空闲的线程,那么就会再建立一条新的线程。
  newFixedThreadPool
特性:建立一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待
 
  newSingleThreadExecutor
特性:
  • 它只会建立一条工做线程处理任务;
  • 采用的阻塞队列为LinkedBlockingQueue
  newScheduledThreadPool
特性:支持定时及周期性任务执行
 
spring提供了一个threadPoolTaskExecutor 线程池
须要关注,线程数,队列类型,拒绝策略
 
这几篇文章讲解的比较好:
相关文章
相关标签/搜索