线程池的效率非常高,所以一切线程操作最好都是以线程池的方式进行。
常见的线程池有:
①newSingleThreadExecutor
单个线程的线程池,即线程池中每次只有一个线程工作,单线程串行执行任务
②newFixedThreadExecutor
固定数量的线程池,没提交一个任务就是一个线程,直到达到线程池的最大数量,然后后面进入等待队列直到前面的任务完成才继续执行
③newScheduleThreadExecutor
大小无限制的线程池,支持定时和周期性的执行线程
④newCacheThreadExecutor
可缓存线程池,当线程池大小超过了处理任务所需的线程,那么就会回收部分空闲的线程,当有任务来时,又智能的添加新线程来执行。
下面是一些线程池的简单用法:
1、先创建线程池
2、创建线程对象
3、提交线程对象
4、销毁线程池
- public class ThreadPool {
- public static void main(String[] args) {
- // 利用线程池创建工厂类拿到线程池对象
- ExecutorService executorService = Executors.newFixedThreadPool(6);
- // 创建线程对象
- Thread thread01 = new Thread(new Runnable() {
- @Override
- public void run() {
- System.out.println("thread01...");
- }
- });
- Thread thread02 = new Thread(new Runnable() {
- @Override
- public void run() {
- System.out.println("thread02...");
- }
- });
- // 将线程对象添加到线程池中
- executorService.submit(thread01);
- executorService.submit(thread02);
- //销毁线程池
- executorService.shutdown();
- }
- }