Java 并发编程
龙浩
1
整理课件
在一个list中有过亿条的Integer类型的值,如何更快的计算这些值的总和?
一个计算的问题
简单的方法:更快的CPU来遍历
靠谱的方法:分而治之来处理
进一步的方法:Fork/jion
2
整理课件
简单的方法靠谱么?
免费午餐已经结束——软件历史性地向并发靠拢
软层次上:遍历是不靠谱的,for小学生了!
3
整理课件
靠谱的方法简单么?(分而治之)
list1
list2
list3
Concurrency
Thread
Thread
Thread
那帮Java大神在他们书中说:
在对性能的追求很可能是并发bug唯一最大的来源!
So:
同样不是免费的午餐,需要学习和批量实践。
4
整理课件
目录
线程
并发编程(juc)
线程监控工具
编程思想和实践
Fork/Jion框架
5
整理课件
Visibility:通过并发线程修改变量值, 必须将线程变量同步回主存后, 其他线程才能访问到。
Ordering:通过java提供的同步机制或volatile关键字, 来保证内存的访问顺序。
Cache coherency :它是一种管理多处理器系统的高速缓存区结构,其可以保证数据在高速缓存区到内存的传输中不会丢失或重复。
Happens-before ordering:synchronized,volatile,final,|atomic
线程:先让路给内存模型
这里有详述: (别迷恋哥,哥只是传说!)
6
整理课件
内存中的可见部分
Stack-1
Stack-2
Stack-3
Globals
Heap
7
整理课件
线程:synchronized
内
部
锁
分
离
锁
分
拆
锁
保证原子性和可见性
8
整理课件
线程:Java Monitors
This figure shows the monitor as three rectangles. In the center, a large rectangle contains a single thread, the monitor's owner. On the left, a small rectangle contains the entry set. On the right, another small rectangle contains the wait set. Active threads are shown as dark gray circles. Suspended threads are shown as light gray circles.
9
整理课件
线程:独占锁(synchronized)
非方法修饰符,注意方法覆写的时候需要加上synchronized;
经典的顺序锁问题(两个线程安全的方法放在一起线程安全么? )
getClass的问题。
……
10
整理课件
java 并发 来自淘豆网m.daumloan.com转载请标明出处.