多线程
2023-04-03 21:53:42 0 举报
AI智能生成
登录查看完整内容
简单记录高并发相关的知识点
作者其他创作
大纲/内容
什么是线程
线程与进程区别
线程安全问题
自增运算线程不安全
并发操作三大问题
外框
线程
NEW
RUNNABLE
BLODED
WAITING
TIME_WAITING
TERMINATE
线程状态
线程名称的设置或获取
sleep(long millis)
sleep
interrupt
join
yield
daemon
线程操作
Thread
set(T val)
T get()
remove()
基本使用
线程隔离
跨函数传递数据
使用场景
Entry
ThreadLoclMap
T initialValue(){return null;}
问题
ThreadLocal
synchronized执行过程
Object的“等待”-“通知”
synchronized
无锁
偏向锁
轻量级锁
重量级锁
内置锁的状态
内置锁优缺点
java内置锁
ReentrantLock
锁使用套路
Condition接口
Lock接口
LockSupport与Thread.sleep对比
LockSupport与Object.wait()对比
LockSupport工具类
可重入锁
不可重入锁
悲观锁
通过CAS自旋实现乐观锁
CLH自旋锁
乐观锁
公平锁
非公平锁
Semaphore信号量
CountDownLatch倒数闩
共享锁
独占锁
可中断锁
不可中断锁
显示锁分类
JUC显示锁
锁
关键信息
Exclusive 独享锁
Share 共享锁
资源共享方式
AQS钩子方法
AQS模板方法
AQS
add(E)
getArray()
setArray(Object[] a)
CopyOnWriteArrayList
LIst
ConcurrentHashMap
Map
SortedSet
Set
put(E e)
offer(E e)
add(E e)
添加
take()
poll()
take();
删除
E peek();
E element();
获取(不删除)
ArrayBlockingQueue
LinkedBlockingQueue
PriorityBlockingQueue
DelayQueue
SynchronousQueue
BlockingQueue
Queue
JUC容器
CompletionStage接口
创建子任务
获取结果
串行处理
合并处理
异步任务的选择执行
方法分类
ForkJoinPool
CompletableFuture
什么是进程
什么是java进程
进程
new Thread()
实现Runnable接口,作为Thread的target对象
FutureTask与Callable结合,futureTask作为Thread的target对象
创建单一线程池
创建固定线程池
创建可缓存线程池
创建可调度线程池
静态工厂类Executors创建
自由定制线程池
ThreadPoolExecutor
线程池
线程创建方式
Executor接口
ExecutorService接口
AbstractExecutorService
corePoolSize 核心线程数
maximumPoolSize 最大线程数
keepAlive 空闲线程存活时间
unit 存活时间单位
workQueue 任务队列
threadFactory 线程工厂
AbortPolicy
DiscardPolicy
DiscardOldestPolicy
CallerRunsPolicy
handler 任务拒绝策略
标准创建方式参数
Future<?> submit(Runnable task)
<T> Future<T> submit(Callable<T> task)
有返回值
void execute(Runnable command);
无返回结果
向线程池提交任务
线程池任务调度流程
protected void terminated() { }
调度器的钩子方法
shutdown()
shutdownNow()
awaitTermination()
线程池关闭方式
ScheduledExecutorService
ScheduledThreadPoolExecutor
优点
IO密集型
CPU密集型
混合型
如何确定线程池数量
CAS无锁编程
常用api
线程安全原理
AtomicInteger
基本原子类
数组原子类
AtomicReference
引用原子类
AtomicIntegerFieldUpdater
属性更新原子类
Atomic原子操作包
提升并发场景CAS效率
ABA问题
只能保证一个共享变量之间的原子性操作
LongAdder
开销问题
弊端
CAS
CPU缓存结构
原子性问题
总线锁
缓存锁
可见性问题
有序性问题
并发三大问题
volatile
volatile关键字
JMM和JVM区别
主存
工作内存
模型概念
8个操作
如何解决有序性
JMM
生产者-消费者模式
Master-Worker模式
ForkJoin
懒汉模式:双重锁+volatile实现
线程安全的单例模式
高并发设计模式
多线程
0 条评论
回复 删除
下一页