concurrent学习笔记
来源:互联网 发布:德运淘宝旗舰店 编辑:程序博客网 时间:2024/05/22 17:10
newFixedThreadPool
创建一个固定大小的线程池。
shutdown():用于关闭启动线程,如果不调用该语句,jvm不会关闭。
awaitTermination():用于等待子线程结束,再继续执行下面的代码。
ThreadPoolExecutor
newFixedThreadPool生成一个固定的线程池,顾名思义,线程池的线程是不会释放的,即使它是Idle。这就会产生性能问题,比如如果线程池的大小为200,当全部使用完毕后,所有的线程会继续留在池中,相应的内存和线程切换(while(true)+sleep循环)都会增加。如果要避免这个问题,就必须直接使用ThreadPoolExecutor()来构造。可以像Tomcat的线程池一样设置“最大线程数”、“最小线程数”和“空闲线程keepAlive的时间”。
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler)
corePoolSize:池中所保存的线程数,包括空闲线程(非最大同时干活的线程数)。如果池中线程数多于 corePoolSize,则这些多出的线程在空闲时间超过 keepAliveTime 时将会终止。
maximumPoolSize:线程池中最大线程数
keepAliveTime:线程空闲回收的时间
unit:keepAliveTime的单位
workQueue:保存任务的队列,可以如下选择:
- 无界队列: new LinkedBlockingQueue<Runnable>();
- 有界队列: new ArrayBlockingQueue<Runnable>(8);你不想让客户端无限的请求吃光你的CPU和内存吧,那就用有界队列
handler:
当提交任务数大于队列size会抛出RejectedExecutionException,可选的值为:
- ThreadPoolExecutor.CallerRunsPolicy 等待队列空闲
- ThreadPoolExecutor.DiscardPolicy:丢弃要插入队列的任务
- ThreadPoolExecutor.DiscardOldestPolicy:删除队头的任务
原子变量(Atomic )
并发库中的BlockingQueue是一个比较好玩的类,顾名思义,就是阻塞队列。该类主要提供了两个方法put()和take(),前者将一个对象放到队列中,如果队列已经满了,就等待直到有空闲节点;后者从head取一个对象,如果没有对象,就等待直到有可取的对象。
- concurrent学习笔记
- java.util.concurrent学习笔记
- Concurrent包学习笔记--Callable
- 张孝祥java.concurrent线程并发学习笔记 - concurrent简介
- 张孝祥java.concurrent线程并发学习笔记 - concurrent简介
- java.util.concurrent包API学习笔记
- java.util.concurrent包API学习笔记
- java.util.concurrent包API学习笔记
- java.util.concurrent包API学习笔记
- java.util.concurrent包API学习笔记
- java.util.concurrent包API学习笔记
- java.util.concurrent包API学习笔记
- java.util.concurrent包API学习笔记
- java.util.concurrent包API学习笔记
- java.util.concurrent 学习笔记(1)
- java.util.concurrent包API学习笔记
- concurrent笔记
- 张孝祥java.concurrent线程并发学习笔记 - 传统线程回顾
- 【JavaScript学习】面向对象的程序设计(6):原型式继承
- 基于github或者码云平台的使用git提交,下载,更新项目
- ThinkPHP 配置数据库文件
- Android 开发者的进阶之路
- Unknown bottom blob 'data' (layer 'conv1', bottom index 0)
- concurrent学习笔记
- TCP协议中的三次握手和四次挥手
- 转载sql中的group by 用法解析
- iOS-动态库创建(详解)
- Struts2拦截器学习
- 心灵毒药
- ZXing库的使用及相应的修改
- POI 颜色Color
- Java IO 字符流 复制文本文件