高效并发
2016-05-26 20:48:16 0 举报
AI智能生成
高效并发是指在多线程或多进程环境下,通过优化算法和资源调度,使得多个任务能够同时执行,从而提高系统的整体性能。为了实现高效并发,需要解决一些关键问题,如数据竞争、死锁、资源争用等。常见的实现方法有线程池、协程、异步编程等。在实际应用中,根据具体场景选择合适的并发模型和技术,可以显著提高程序的运行效率和响应速度。
作者其他创作
大纲/内容
硬件的效率与一致性
处理器和内存速度不一致
缓存失效问题
Java 内存模型
主内存和工作内存
主内存:Java 堆对象实例数据部分
工作内存:虚拟机栈
内存间交互操作
8 种操作
lock(锁定)-> unlock(解锁)
read(读取)-> load(载入):主内存->工作内存
use(使用):工作内存->执行引擎
assign(赋值):执行引擎->工作内存
store(存储)-> write(写入):工作内存->主内存
8 种规则
read和load,store和write成对出现
不许线程丢弃 assign 操作,工作内存改变必须同步回主内存
线程不能无故同步数据
变量只能产于主内存
一个变量同一时刻只能一个线程Lock
Lock主内存变量会清空工作内存数据,需要再次load或assign
没lock不许unlock
unlock之前必须同步回主内存
Volatile 变量的特殊规则
轻量级同步机制
两种语义
保证此变量对所有线程的可见性
禁止指令重排序优化
场景
运算结果不依赖当前值或只有单一线程修改变量
变量不需要与其他的状态变量共同参与不变约束
long 和 double 变量的特殊规则
原子性、可见性和有序性
先行发生原则(happen-before)
程序次序规则
管程锁定规则
volatile 变量规则
线程启动规则
线程终止规则
线程中断规则
对象终结规则
传递性
Java 与线程
线程的实现
使用内核线程
用户线程加轻量级进程混合
使用用户线程
Java 线程的实现
Java 线程调度
状态转换
新建
运行
无限期等待
限期等待
阻塞
结束
线程安全
Java 中的线程安全
不可变
绝对线程安全
相对线程安全
线程兼容
线程独立
实现线程安全
非阻塞同步
无同步
互斥同步
锁优化
自旋锁和自适应自旋
锁消除
锁粗化
轻量级锁
偏向锁
0 条评论
下一页