Java并发常见概念总结
2017-05-26 15:03
211 查看
Java并发
互斥锁(重量级锁)
synchronized
对象锁
不可中断
可重入
非公平
相关操作
wait/waitAll/notify/notifyAllsynchronized(object){
while(等待条件不满足){
object.wait();
}
}
ReentrantLock
可重入
可中断
分支主题
公平可设置
相关操作
condition,需要满足同一个条件的所有对象,等待同一个conditionLock lock = new ReentrantLock();
Condition condition = lock.newCondition();
lock.lock();
try{
while(条件不满足){
condition.await();
}
访问共享资源
condition.signal();
}finally{
lock.unlock();
}
ReentrantReadWriteLock
公平可设置
可重入
读共享,写互斥
读锁升级,先解锁(防死锁);写锁降级,先加锁(确保锁不丢)
自旋锁(轻量级锁)
CAS
例: AtomicInteger
偏向锁
单一线程访问同步块的场景
已有的锁被标记,不用再加锁与解锁
mark world
对象头标记区
锁标记
多线程共享变量的可见性
volatile
每次强制线程从共享内存中获取变量;更新时,也强制更新至共享内存
仅保证可见性,不保证原子性
AtomicIntegerFieldUpdaterCounter
将已有成员变量封装,使其具备原子性
死锁(抢资源导致)
一个线程同时使用两把以上的锁,就有死锁隐患
活锁(让资源导致)
其他工具
CountDownLatch
多个主线程倒计数等待子线程完成,多个主线程可继续
Latch“门闩"。开门都让大家通过,然后再关门
CyclicBarrier
主线程一直准备,设置障碍。等到指定数量子线程都到达障碍处等待,再移除障碍,使得子线程继续。
整理脑图:http://naotu.baidu.com/file/4d56449fad26594909d45e3ce962d948?token=e7e3331c75767b40相关文章推荐
- Java多线程学习-并发编程实践基本概念总结整理
- Java基础知识之常见关键字以及概念总结
- java简单总结1(对象的基本概念)
- 常见数据库java && jdbc连接字符串总结
- Java中类的一些概念总结
- Java并发总结(二):同步与原子性
- Java并发总结(一):线程基础
- JAVA经典题目,对理解概念很有意思(自己总结)
- Java常见异常总结(未完)
- Java基础概念总结
- Java多线程编程总结笔记——二概念与原理
- Java并发总结(四):线程的协作
- Java面试常见题目汇总(主要是概念)
- JAVA基础――1.图解 Eclipse 常见概念和操作
- java的常见异常与错误总结
- JAVA总结:常见的Java异常归类表 http://webservices.ctocio.com.cn/java/64/9361564_1.shtml
- java部分概念总结
- JAVA基本概念及语法总结
- java常见面试题总结
- Java常见的异常总结