我的Github地址
有问题直接留言或 联系QQ:1079569023
Thread线程
- Linux:一个进程:1000个Thread限制
- Windows:20000个Thread
ThradPoolExecutor
- corePoolSize:核心线程数,缓存的线程数量
- maximumPoolSize: 10
BlockingQueue到达最大容量后,可以添加的任务数量
10:用来在增加5个线程来执行任务,最多存在10个线程
- keepAliveTime:
任务数量减少后,只会杀掉maximumPoolSize定义多出来的几个线程,不会杀掉核心线程数
- BlockingQueue:到达核心线程数后,任务存放点
阻塞队列:先进先出,队列满的时候,放任务的线程会被阻塞
1.add,remove->add满的时候,直接抛异常
2.offer,pull->add满的时候,不抛异常
3.put,take ->会阻塞调用线程,主要是用这个
Android常用2个阻塞对列
LinkedBlockingQueue/ArrayBlockingQueue
- RejectedExecutionHandler:任务超出BlockingQueue+maximumPoolSize 后,执行的拒绝策略
1.抛弃最早的任务
2.直接抛出异常(AbortPolicy默认参数)
3.原线程执行
4.直接抛弃
6.合理配置线程池
1.CPU密集型:线程池个数不要超过系统CPU核心数
Runtime.getRuntime.availableProessors
2.IO密集型:无法确定IO操作数量
缺省默认是:2*CPU个数
3.参考Android中的AsyncTask
网友评论