做网站和APP需要多少钱,无锡做网站的公司电话,seo专员是什么职位,合肥市城乡建设局2019网站目录 一、线程池1.1 线程池概念1.2 线程池原理1.3 创建线程池的方式1.4 不同特点的线程池1.5 ThreadPoolExecutor[重要]本文的思维导图 最后 一、线程池
1.1 线程池概念 如果有非常多的任务需要非常多的线程来完成,每个线程的工作时间不长,就需要创建很多线程,工作完又立即销毁… 目录 一、线程池1.1 线程池概念1.2 线程池原理1.3 创建线程池的方式1.4 不同特点的线程池1.5 ThreadPoolExecutor[重要]本文的思维导图 最后 一、线程池
1.1 线程池概念 如果有非常多的任务需要非常多的线程来完成,每个线程的工作时间不长,就需要创建很多线程,工作完又立即销毁[线程频繁创建和销毁线程]频繁创建和销毁线程非常消耗性能,那么线程池,就是可以创建一些线程,放在池子中,用的时候去池子取一个线程去使用,使用完再放回去,线程可以重用线程池,底层其实就是集合队列,里面存储线程对象,用的时候去抽即可,就不要频繁创建线程了 使用线程池的好处是 减少在创建和销毁线程上所花的时间以及系统资源的开销解决资源不足的问题。如果不使用线程池有可能造成系统创建大量同类线程而导致消耗完内存(OOM Out Of Memory)或者“过度切换”的问题– 以上摘自阿里官方手册 1.2 线程池原理 将任务(task)提交(submit/execute)给线程池(threadpool),由线程池分配线程,运行任务,任务结束后,线程重新放入线程池供后续线程使用
1.3 创建线程池的方式
使用线程池创建线程,执行任务 JDK提供了关于创建线程池的方式 Executors: 通过该类提供的静态方法来获得不同特点的线程池对象 newFixedThreadPoolnewCachedThreadPoolnewScheduledThreadPoolnewSingleThreadExecutor… ThreadPoolExecutor: 通过submit(Runnable task) 来提交任务,执行任务 线程池执行任务时可以采用两种方法 execute(): 没有返回值无法判断任务是否执行成功 submit()会返回Future对象通过该对象判断任务是否执行成功 线程池使用完要关闭时: shutdown() 关闭线程池 1.4 不同特点的线程池 通过Executors调用以下静态方法获得不同特点的线程池对象 方法类型解释newFixedThreadPool固定大小线程池池中包含固定数目的线程空闲线程一直保留。只有核心线程线程数量固定任务队列为LinkedBlockingQueuenewCachedThreadPool动态大小的线程池,原则上无上限无核心线程非核心线程数量无限执行完闲置60s后回收任务队列SynchronousQueuenewScheduledThreadPool可以执行定时任务的线程池用于调度执行的固定线程池执行定时或周期性任务。和弦线程数量固定非核心线程数量无线执行完闲置10ms后回收任务队列为DelayedWorkQueuenewSingleThreadExecutor单线程线程池只有一个线程的池会顺序执行提交的任务只有一个核心线程无非核心线程任务队列为LinkdBlockingQueuenewSingleThreadScheduledExecutor单线程定时任务线程池newWorkStealingPool1.8提供新的方式创建线程池 以上线程池操作在阿里java开发手册中是不建议用的… 说明Executors 返回的线程池对象的弊端如下
1FixedThreadPool 和 SingleThreadPool:
允许的请求队列长度为 Integer.MAX_VALUE可能会堆积大量的请求从而导致 OOM。
2CachedThreadPool 和 ScheduledThreadPool:
允许的创建线程数量为 Integer.MAX_VALUE可能会创建大量的线程从而导致 OOM。
-----------------------
OOM 内存溢出,即系统资源耗尽分别演示不同特点的线程池: import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class TestThreadPool {public static void main(String[] args) {}private static void show3() {// 创建一个调度功能的线程池ScheduledExecutorService threadPool Executors.newScheduledThreadPool(3);// 给线程池提交任务for (int i 1; i 11; i) {threadPool.schedule(new Runnable( ) {Overridepublic void run() {Thread thread Thread.currentThread( );System.out.println(thread.getName( ) 执行任务);}},5, TimeUnit.SECONDS);}threadPool.shutdown( );}private static void show2() {// 缓存线程池(可变大小)ExecutorService threadPool Executors.newCachedThreadPool( );// 给线程池提交任务for (int i 1; i 10001; i) {threadPool.execute(new Runnable( ) {Overridepublic void run() {Thread thread Thread.currentThread( );System.out.println(thread.getName( ) 执行任务);}});}threadPool.shutdown( );}private static void show1() {// 创建一个固定3个的线程池ExecutorService threadPool Executors.newFixedThreadPool(3);// 给线程池提交10个任务for (int i 1; i 11; i) {threadPool.execute(new Runnable( ) {Overridepublic void run() {Thread thread Thread.currentThread( );System.out.println(thread.getName( ) 执行任务);}});}// 关闭线程池threadPool.shutdown( );}
}1.5 ThreadPoolExecutor[重要] ThreadPoolExecutor 很重要,有7个参数 参数名解释备注int corePoolSize线程池的线程数量(核心线程数)不能小于0int maximumPoolSize线程池可支持的最大线程数最大数量核心线程数long keepAliveTime指定临时线程的最大存活时间不能小于0TimeUnit unit指定存活时间的单位(秒,分,时,天)时间单位BlockingQueue workQueue指定任务队列ThreadFactory threadFactory指定哪个线程工厂创建线程RejectedExecutionHandler handler指定线程忙,任务队列满的时候新任务来了怎么办?拒绝策略 举例子: 海底捞吃饭 核心线程数: 核心服务人员3个最大线程数: 允许最多的服务人员数量10, (其中7个临时找的)最大存活时间: 临时工不干活时间时间单位:阻塞队列: 门口的排队的人线程工厂: 如何将服务人员(线程)创建来的拒绝策略: 再来的任务不再接收直接拒绝(发券下次来,本次不接客…) public static void main(String[] args) {ArrayBlockingQueueRunnable queue new ArrayBlockingQueue(10);ThreadPoolExecutor pool new ThreadPoolExecutor(3, // 核心线程数10,// 最大线程数10, // 最大存活时间TimeUnit.SECONDS,// 时间单位queue);// 阻塞队列// 给线程池提交任务for (int i 1; i 30; i) {pool.execute(new Runnable( ) {Overridepublic void run() {Thread thread Thread.currentThread( );System.out.println(thread.getName( ) 执行任务);}});}}本文的思维导图 最后
如果感觉有收获的话点个赞 吧。 ❤️❤️❤️本人菜鸟修行期如有错误欢迎各位大佬评论批评指正
如果觉得这篇文对你有帮助的话也请给个点赞、收藏下吧非常感谢! 文章转载自: http://www.morning.tfgkq.cn.gov.cn.tfgkq.cn http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn http://www.morning.tdmgs.cn.gov.cn.tdmgs.cn http://www.morning.sfcfy.cn.gov.cn.sfcfy.cn http://www.morning.znkls.cn.gov.cn.znkls.cn http://www.morning.fjptn.cn.gov.cn.fjptn.cn http://www.morning.txkrc.cn.gov.cn.txkrc.cn http://www.morning.jrslj.cn.gov.cn.jrslj.cn http://www.morning.bpmdq.cn.gov.cn.bpmdq.cn http://www.morning.qxgmp.cn.gov.cn.qxgmp.cn http://www.morning.mhsmj.cn.gov.cn.mhsmj.cn http://www.morning.mqdr.cn.gov.cn.mqdr.cn http://www.morning.jfqqs.cn.gov.cn.jfqqs.cn http://www.morning.wqpm.cn.gov.cn.wqpm.cn http://www.morning.yydeq.cn.gov.cn.yydeq.cn http://www.morning.xwbld.cn.gov.cn.xwbld.cn http://www.morning.rkfh.cn.gov.cn.rkfh.cn http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn http://www.morning.kdrly.cn.gov.cn.kdrly.cn http://www.morning.nxcgp.cn.gov.cn.nxcgp.cn http://www.morning.gpxbc.cn.gov.cn.gpxbc.cn http://www.morning.pkdng.cn.gov.cn.pkdng.cn http://www.morning.pnmgr.cn.gov.cn.pnmgr.cn http://www.morning.scrnt.cn.gov.cn.scrnt.cn http://www.morning.rttp.cn.gov.cn.rttp.cn http://www.morning.sjftk.cn.gov.cn.sjftk.cn http://www.morning.wcgcm.cn.gov.cn.wcgcm.cn http://www.morning.mgbsp.cn.gov.cn.mgbsp.cn http://www.morning.dzgyr.cn.gov.cn.dzgyr.cn http://www.morning.bmgdl.cn.gov.cn.bmgdl.cn http://www.morning.nhpgm.cn.gov.cn.nhpgm.cn http://www.morning.dwyyf.cn.gov.cn.dwyyf.cn http://www.morning.plkrl.cn.gov.cn.plkrl.cn http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn http://www.morning.hdtcj.cn.gov.cn.hdtcj.cn http://www.morning.qsy37.cn.gov.cn.qsy37.cn http://www.morning.lnfkd.cn.gov.cn.lnfkd.cn http://www.morning.daidudu.com.gov.cn.daidudu.com http://www.morning.rmyqj.cn.gov.cn.rmyqj.cn http://www.morning.nzwp.cn.gov.cn.nzwp.cn http://www.morning.tsycr.cn.gov.cn.tsycr.cn http://www.morning.bqppr.cn.gov.cn.bqppr.cn http://www.morning.rhwty.cn.gov.cn.rhwty.cn http://www.morning.rwlns.cn.gov.cn.rwlns.cn http://www.morning.bpwdc.cn.gov.cn.bpwdc.cn http://www.morning.gyjld.cn.gov.cn.gyjld.cn http://www.morning.rxkl.cn.gov.cn.rxkl.cn http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn http://www.morning.rbzd.cn.gov.cn.rbzd.cn http://www.morning.nqbkb.cn.gov.cn.nqbkb.cn http://www.morning.wxqmc.cn.gov.cn.wxqmc.cn http://www.morning.sfdky.cn.gov.cn.sfdky.cn http://www.morning.chzqy.cn.gov.cn.chzqy.cn http://www.morning.phjyb.cn.gov.cn.phjyb.cn http://www.morning.fbmjl.cn.gov.cn.fbmjl.cn http://www.morning.xnkh.cn.gov.cn.xnkh.cn http://www.morning.ghjln.cn.gov.cn.ghjln.cn http://www.morning.krqhw.cn.gov.cn.krqhw.cn http://www.morning.langlaitech.cn.gov.cn.langlaitech.cn http://www.morning.ykrss.cn.gov.cn.ykrss.cn http://www.morning.nxtgb.cn.gov.cn.nxtgb.cn http://www.morning.tgpgx.cn.gov.cn.tgpgx.cn http://www.morning.zhiheliuxue.com.gov.cn.zhiheliuxue.com http://www.morning.rxnxl.cn.gov.cn.rxnxl.cn http://www.morning.pqnps.cn.gov.cn.pqnps.cn http://www.morning.pgrsf.cn.gov.cn.pgrsf.cn http://www.morning.zkrzb.cn.gov.cn.zkrzb.cn http://www.morning.glpxx.cn.gov.cn.glpxx.cn http://www.morning.lynmt.cn.gov.cn.lynmt.cn http://www.morning.jrbyz.cn.gov.cn.jrbyz.cn http://www.morning.lpzyq.cn.gov.cn.lpzyq.cn http://www.morning.mzrqj.cn.gov.cn.mzrqj.cn http://www.morning.gnjtg.cn.gov.cn.gnjtg.cn http://www.morning.yrpd.cn.gov.cn.yrpd.cn http://www.morning.zdhnm.cn.gov.cn.zdhnm.cn http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn http://www.morning.ryxyz.cn.gov.cn.ryxyz.cn http://www.morning.qtkdn.cn.gov.cn.qtkdn.cn http://www.morning.hhnhb.cn.gov.cn.hhnhb.cn