网站建设网站优化微信saas平台
阻塞队列
笔记地址
 点击进入
队列:先进先出
 限定在一端进行插入,一端进行删除
 出队为队头,入队为队尾
阻塞队列 BlockingQueue

Queue接口继承Collection接口添加元素:add(),队列满了对抛出异常offer(),队列满了不会抛出异常,返回false,不会抛异常删除元素:remove(),有元素则返回移除的元素,为空的话则抛出异常poll(),有元素则返回移除的元素,为空的话则返回null获取队首元素:element():抛异常peek():不抛异常
 
BlockQueue:
 多了两个方法:会进行阻塞
 put()
 take()


 
线程池
1:如何设置线程池的核心线程数和最大线程数4
 我们对线程池负责执行的任务分为三种情况:
 CPU密集型任务:比如找出1-1000000的素数:理论是CPU核数+1
 IO密集型任务:比如文件io 网络io
 混合任务
 我们可以按以下公式进行【理论】:
 线程数 = CPU核心数*(1+线程等待时间/线程运行总时间)
 现实工作中经常用压测的方法来估算
 工具:Jmeate、PostApi
 2:线程池下
 
 线程池的五种状态


running
 shutdown:会把队列中的任务处理完
 stop:不会处理队列中的任务
 tidying:所有的线程停掉之后就会变成这个状态
 terminated:

