juc复习(10.31)
阻塞队列
写入:如果队列满了,就必须阻塞等待
读取:如果队列是空的,必须阻塞等待生产
使用阻塞队列的情况
多线程并发处理,线程池
四组API
方式 | 抛出异常 | 有返回值不抛出异常 | 阻塞等待 | 超时等待 |
---|---|---|---|---|
添加 | add | offer | put | offer(3个参数) |
移除 | remove | poll | take | poll(两个参数) |
检测队首元素 | element | peek | - | - |
SynchronousQueue同步队列
没有容量
进去一个元素,必须等待取出来之后才能再往里放一个元素
-
同步队列
-
和其他的BlockingQueue 不一样, SynchronousQueue 不存储元素
-
put了一个元素,必须从里面先take取出来,否则不能在put进去值!
线程池
池化技术
事先准备好一些资源,用则拿走,用完则还
优化资源的使用,创建,销毁十分浪费资源
线程池的好处:
1、降低资源的消耗
2、提高响应的速度
3、方便管理。 线程复用、可以控制最大并发数、管理线程
三大方法
Executors 工具类、3大方法
ExecutorService threadPool = Executors.newSingleThreadExecutor();// 单个线 程
ExecutorService threadPool = Executors.newFixedThreadPool(5); // 创建一 个固定的线程池的大小
ExecutorService threadPool = Executors.newCachedThreadPool(); // 可伸缩 的
使用了线程池之后,使用线程池来创建线程
threadPool.execute()
线程池用完,程序结束,关闭线程池
threadPool.shutdown();
7大参数
ThreadPoolExecutor(
int corePoolSize, // 核心线程池大小
int maximumPoolSize, // 最大核心线程池大小
long keepAliveTime, // 超时了没有人调用就会释放
TimeUnit unit, // 超时单位
BlockingQueue<Runnable> workQueue, // 阻塞队列
ThreadFactory threadFactory, // 线程工厂:创建线程的,一般不用动
RejectedExecutionHandler handle // 拒绝策略
)
ExecutorService threadPool = new ThreadPoolExecutor(七大参数)
threadPool.execute()
threadPool.shutdown()
四种拒绝策略
-
new ThreadPoolExecutor.AbortPolicy() // 抛出异常
-
new ThreadPoolExecutor.CallerRunsPolicy() // 调用者处理
-
new ThreadPoolExecutor.DiscardPolicy() //队列满了,丢掉任务,不会抛出异常!
-
new ThreadPoolExecutor.DiscardOldestPolicy() //队列满了,尝试去和最早的竞争,也不会抛出异常
函数式接口
只有一个方法的接口
Function<参数类型,返回值类型> function = (参数)->{return 返回值;};
Predicate<参数类型> predicate = (参数)->{return 布尔类型; };
Consumer<参数类型> consumer = (参数)->{return;};
Supplier supplier = ()->{ return 返回值; };
ForkJoin
并行执行任务
ForkJoin 特点:工作窃取
双端队列
JMM
Java内存模型,抽象概念
Volatile 是 Java 虚拟机提供轻量级的同步机制
1、保证可见性 2、不保证原子性 3、禁止指令重排
关于JMM的一些同步的约定
1、线程解锁前,必须把共享变量立刻刷回主存。
2、线程加锁前,必须读取主存中的最新值到工作内存中
3、加锁和解锁是同一把锁
volatile可以避免指令重排
1、保证特定的操作的执行顺序
2、可以保证某些变量的内存可见性
Volatile 是可以保持可见性不能保证原子性
由于内存屏障可以保证避免指令重排的现象产生
标签:juc,下篇,10.31,队列,阻塞,threadPool,线程,new,ThreadPoolExecutor From: https://blog.csdn.net/m0_62261710/article/details/143403474