多线程并发编程
2024-01-24 20:07:16 0 举报
AI智能生成
登录查看完整内容
为你推荐
查看更多
java多线程并发编程
作者其他创作
大纲/内容
AbstractqueuedSynchronizer同步器b style=\
getState():获取当前同步状态
setState(int newState):设置当前同步状态
以下三个方法来修改同步状态
独占式 获取与释放 同步状态
共享式获取与释放不同状态
查询同步队列中的等待线程情况
同步器可重写的方法基本为3类
队列同步器基于模板方法
同一时刻只能有一个线程获取到锁,而其他获取锁的线程只能处于同步队列中等待,只有获取锁的线程释放了锁,后继的线程才能获取锁
独占锁
同步队列FIFO双向队列
独占式同步状态获取与释放
共享式状态获取与释放
实现方式
AQS
Compare And Swap
ABA解决方案版本号
ABA
循环时间长 开销大
只能保证一个共享变量的原子操作
缺陷
CAS
volatile和synchronized关键字
使用wait()、notify()和notifyAll()时需要先对调用对象加锁
notify()或notifyAll()方法调用后,等待线程依旧不会从wait()返回,需要调用notify()或notifyAll的线程释放锁之后,等待的线程 才有机会从wait()返回。
notify()方法将等待队列中的一个等待线程从等待队列 中移到同步队列中,而notifyAll()方法将等待队列中所有的线程全部移到同步队列,被移动的线程状态由WAITING变为BLOCKING .
从wait()方法返回的前提 是获得了调用对象的锁
等待/通知经典范例
Thread.join()
线程间通信
ThreadLocal
并发 基础
应用场景
Cyclicbarrier同步屏障
一个线程调用countDown方法happen-before,另外一个线程调用await方法。
CountDownLatch
Cyclicbarrier与CountDownLatch区别
使用场景
Semaphore
并发工具类
锁
其他
线程通信
并发集合
线程池
原子操作
内存模型
sychronized
多线程并发编程
0 条评论
回复 删除
下一页