学习一个技能点能够从这几方面去思考?java
一、线程池是什么?缓存
二、为何要使用线程池?使用它以后能够带来什么好处?并发
三、怎么用?高并发
四、底层原理是如何实现的?学习
第一个问题:说说你对线程池的理解?优化
线程池从字面意思去理解,一个池子里面有一系列的线程,这些线程是事先建立好了的,拿来即用。spa
建立线程和销毁线程是不便利的,高并发环境下频繁的建立线程和销毁线程会形成资源的浪费甚至致使系统崩溃,建立和销毁线程是很是消耗资源的‘低效率。而线程池的出现恰好解决了这一问题,省略建立和销毁这一过程,从而最优化使用系统资源。线程
因此使用线程池做用有两点:一、提早将线程建立好——提升效率;二、提升系统资源利用率——避免系统奔溃;code
第二问题:如何建立线程池?blog
jdk提供4中建立线程池方式:
第一种:建立一个单线程化的线程池,它只会用惟一的工做线程来执行任务,保证全部任务都按照指定顺序执行
第二种:建立一个定长线程池,可控制线程的最大并发数,超出的线程会在队列中等待.
第三种:建立一个可缓存线程池,若是线程池长度超过处理须要,可灵活回收空闲线程,若无可回收,则建立新线程.
第四种:建立一个定长的线程池,支持定时周期性执行任务;
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize) { return new ScheduledThreadPoolExecutor(corePoolSize); }
第三个问题:底层原理是如何实现的?
第四个问题:说说线程池的几个参数?