2022-08-04 第六小组 高佳誉 学习笔记
锁和线程池
重点
- LockSupport工具类
- Lock锁
- 并发编程的三大特性
- JDK自带的四种线程池
- 自定义线程池
思维导图

知识点
1. LockSupport工具类
所有的方法都是静态方法,可以让线程在任意位置阻塞,阻塞滞后也有唤醒的方法。
park:停车。如果我们把Thread看成一辆车的话,park就是让车停下
unpark:让车启动然后跑起来
2.Lock锁
键盘输入和打印输出是极其耗资源的,因为是频繁的IO操作,这两种在实际开发中绝对不允许使用。
如果能用Lock,优先选择Lock,如果Lock太麻烦,选择synchronized代码块,如果synchronized代码块解决不了,使用synchronized方法。
Lock接口的实现类—ReentrantLock
ReentrantLock,可重入锁。实现了Lock接口
3. synchronized和Lock的异同
1.Lock是一个接口,synchronized是一个关键字,synchronized是由底层语言(C语言)实现的。
2.Synchronized(自动释放)发生异常时,会自动释放线程占用的锁,不会发生死锁。Lock发生异常(需要手动释放),若没有主动释放,极有可能占用资源不放手,需要在finally中手动释放锁(调用Lock方法)
3.Lock可以让等待锁的线程响应中断,使用synchronized只会让等待的线程一直等待下去,不能响应中断。
4.Lock可以提高多个线程进行读操作的效率。
4. 并发编程的三大特性
1.原子性:原子操作可以是一个步骤也可以是多个步骤,但是顺序不能乱,也不可以被切割只执行其中的一部分,将整个操作视为一个整体。原子性不仅仅是多行代码,也可能是多条指令。
2.可见性
3.有序性(指令重排)

5. 线程池中参数的意义*****
corePoolSize:线程池里线程的数量,核心线程池的大小
maximumPoolSize:制定了线程池里的最大线程数量
keepAliveTime:当线程池里的线程数量大于核心的大小(corePoolSize),多出辣的空闲线程,多长时间被销毁。
unit(枚举):时间单位
workQueue:任务队列,用于存放提交但是尚未被执行的任务
threadFactory:线程工厂,用来创建线程,线程工厂就是给我们new线程的
handler:拒绝策略,是将任务添加到线程池中,线程池拒绝该任务所采取的的相应的措施。
6. 线程池提供的四种拒绝策略
AbortPolicy:直接抛出异常(默认的策略)
CallerRunPolicy:用调用者所在的线程来执行任务
DiscardOldestPolicy:丢弃阻塞队列中最靠前的任务并执行当前任务
DiscardPolicy:直接丢弃任务
掌握程度
锁的应用基本了解,线程池部分一脸懵,知识点很模糊 自我建议:观看回放,尝试理解
收获
一个精彩的人生的前提是拥有一个良好的身体
学习效果展示

 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号