【MapSheep】
[好记性不如烂笔头]
  1. Java并发
    • 对线程,对项目的一种优化
  2. 什么是线程池?
    • 池化思想:线程池、字符串常量值、数据库连接池。
  3. 使用线程池的步骤
    • 手动创建线程池对象
    • 执行任务
    • 执行完毕,释放线程对象
  4. 线程池优点
    • 优:提高线程的利用率,提高程序的响应速度,便于统一管理线程对象,可以控制最大的并发数。
      • 通过设置线程池的参数,控制线程池的容量,进而控制系统的最大并发量。
  5. 画图解释
    • 系统层面解释

    • 举个生活中的例子解释 ----》银行办理业务。

  6. 代码展示实现。

import org.junit.Test;

import java.util.concurrent.*;

public class ThreadPoolTest {

    @Test
    public void ThreadPool() {
        //1、JUC工具包给我们提供了这样的一个类, 通过这个类, 可以直接创建线程池对象
        //2、其中一共有7个参数,①核心线程池数,②最大线程数,③存活时间 多长时间没有接到任务, 就可以下班回家了,④时间单位(秒),⑤等待队列,⑥线程工厂,⑦拒绝策略(直接抛异常的方式)
        ExecutorService executorService = new ThreadPoolExecutor(3, 5, 1L, TimeUnit.SECONDS, new ArrayBlockingQueue<>(3), Executors.defaultThreadFactory());

        //3、接待客户,i< 客户人数
        for (int i = 0; i < 8; i++) {
            //3.1、从线程池取线程对象
            executorService.execute(() -> {
                System.out.println(Thread.currentThread().getName() + " , 这个人在办理业务");
            });
        }
        //4、关掉线程池
        executorService.shutdown();

        //5、来第9个会报错, 抛异常, 默认采用拒绝策略
    }
}
posted on 2021-08-04 22:33  (Play)  阅读(35)  评论(0编辑  收藏  举报