31.线程池用过么?谈谈你的理解?
线程池做的工作是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其他线程执行完毕 。再从队列中取出任务来执行 。
他的主要特点为: 线程复用:控制最大并发数:管理线程 。
第一:降低资源消耗 。通过重复利用已创建线程降低线程创建和销毁造成的消耗 。
第二:提高响应的速度 。当任务到达时,任务可以不需要的等到线程创建就能立刻执行 。
第三:‘提高线程的可管理性 。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配,调优和监控 。
常用的线程池:三种,实际一共5种,一种带线程调度的,还有一种是java8新特性带着一个线程池,底层都是类上进行的修改 。
Executors.newFixedThreadPool(10);---》一池固定数线程,就代表10个线程,适用于执行长期任务下面是对应着上一个的源码public static ExecutorService newFixedThreadPool(int nThreads) {return new ThreadPoolExecutor(nThreads, nThreads,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue
创建固定线程数的线程池,特点如下:
? 1.创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列种等待 。执行长期的任务,性能好很多 。
? 2.创建的线程池和值是相等的,它使用的
创建单一线程数的线程池,特点如下:
? 1.创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定的顺序执行 。一个任务一个任务执行的场景 。
? 2.tor将和值都设置为1,它使用的
创建可缓存线程池特点如下:
? 1.创建一个可缓存线程池,如果线程长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程 。适用于:执行很多短期异步的小程序或者负载较轻的服务器 。
? 2.,也就是说来了任务就创建线程运行,当线程空闲超过60秒,就销毁线程
小总结,都是在这个类上改造的,都需要用到阻塞队列 。
常用的有5个参数,实际上传入的是7个参数 。
1.: 线程池中的常驻核心线程数 。在创建了线程池后,当有请求任务来之后 。就会安排池中的线程去执行请求任务,近似理解为今日当值线程 。当线程中的线程数目达到后,就会把达到的任务放到缓存队列当中 。
- 全球销量最好的100款手机。看看你用过的手机排在第几位? 世界之最的五部手机是什么
- 天津青少年篮球培训
- 海淀少年宫
- 宅多少年后就不算了,自的房子算不算宅
- 从“不良少年”到美国总统,奥巴马是如何走向权力巅峰 历史美国领导人之最
- 初中生四刷世界记录,“光速少年”再创佳绩 吉尼斯记录画报
- 十大国产经典网游,引领一代人的回忆,来看看你玩过几款! 中国十大网络游戏
- “同年不同脸”的9对明星,有人鲜嫩似少年,有人苍老如大爷 秦海璐吉尼斯记录
- 闸北区青少年活动中心
- 成都市青少年宫