个人技术分享

线程池


普通线程池

//创建线程池,不指定上限
ExecutorService pool1 = Executors.newCachedThreadPool();
//创建线程池,指定上限
ExecutorService pool1 = Executors.newFixedThreadPool(5);
-------------------------------------------------

//创建线程,提交任务,每次提交都会分配一个线程池
pool1.submit(new MyRunnable());



-------------------------------------------------

//销毁线程池
pool1.shutdown();

自定义线程池

在这里插入图片描述
在这里插入图片描述

import java.util.concurrent.*;

public class Main {
    public static void main(String[] args) throws InterruptedException {


        //创建线程池,不指定上限
        ExecutorService pool1 = Executors.newCachedThreadPool();
//
//
//        //创建线程池,指定上限
//        ExecutorService pool1 = Executors.newFixedThreadPool(5);
//
//        //创建线程,提交任务,每次提交都会分配一个线程池
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//        pool1.submit(new MyRunnable());
//
        //销毁线程池
        pool1.shutdown();


        ThreadPoolExecutor pool=new ThreadPoolExecutor(
                3,//核心线程数量,必须>0
                6,//最大线程数,包含核心数量与临时数量。必须>=核心数量
                60,//空闲线程最大存活时间
                TimeUnit.SECONDS,//时间的单位
                new ArrayBlockingQueue<>(3),//任务队列 !=NULL
                Executors.defaultThreadFactory(),//线程工厂,获取线程
                new ThreadPoolExecutor.AbortPolicy()//拒绝策略,静态内部类
        );


    }
}