多线程知识点概述
前言
从今天开始,我们再次学习多线程的相关知识点,这一次的目的是希望能够更详细地梳理多线程相关知识,为日常开发找出更好的实践方向,本次关心的核心点有两个,一个是线程安全方面的内容,包括锁、原子类、CAS
C等,另一个是工具类相关的,包括线程池已经juc
下面其他工具类。
今天我们主要是梳理多线程这块的技术点,为后续进阶学习做准备,好了,下面我们直接开始吧!
多线程
线程
首先是线程的基本知识,包括线程的基本概念、线程创建的方式、线程的状态等内容,同时,在这块我们会了解线程的常用方法,并显示各个方法的运行效果。
线程池
线程池这块主要是线程池的创建和使用。创建这块要熟悉线程池的构造参数,清楚各个参数的作用和具体用法;使用这块要清楚线程池的任务提交方式、拒绝策略等
常用组件
关键字
虽然synchronized
关键字算是java
的老关键字了,但是我还是不能恰到好处地使用这个关键字,所以这一次我会尽可能详细地探索synchronize
和volatile
的应用场景,找到更合理地应用场景
synchronized
volatile
final
volatile
仅能实现变量的修改可见性,不能保证原子性;而synchronized
则可以保证变量的修改可见性和原子性
原子类
原子类主要包括三块内容,一种是基本类型的原子类,比如boolean
的、integer
的、Long
的,一种是这三种基本类型的数组,最后一种是引用类型的原子类。
另外还包括其他原子操作的组件,比如Accumulator
、Adder
和FieldUpdater
,不过这些实际开发中基本上用不到。
锁
关于锁这块的内容,我们前面其实也讲过了,但当时只是简单剖析了读写锁和可重入锁,也都比较简单,这一次我希望能够更全面地了解java
多线程的锁,所以会尽可能多探讨一些。
可重入锁 读写锁 StampedLock
Condition
常用组件
这一块主要包括多线程的常用组件,这里的内容除了LockSupport
,其他的都分享过了,不过这一次我们还需要再次回顾下,既是回顾,也是为了查漏补缺、
其他组件
这一块的内容在上次学习的时候基本上没咋涉及到,所以这次应该会多分享一些。
Unsafe
队列 Fork-Join
方案TimeUnit
结语
好了,以上就是我们本次重学java
多线程的内容概要,从明天开始我就开始按照上面的内容进行更新学习,希望能够通过这一次的学习和梳理,对多线程有更深入的认知,同时也希望这个过程可以帮到各位小伙伴。
需要完整资料的小伙伴,可以在公众号后台回复【多线程】获取相关脑图,好了,大家晚安吧!
- END -