Java并发的一些概念
2018-02-24 18:13
246 查看
并行之争
与串行相比,并行的实现异常复杂,程序难以阅读,更难以调试,把简单问题复杂化。但是在图像处理和服务端程序例外。1024 * 768 像素的图片,有78万多个像素,将所有的像素遍历一遍,要花不少时间。更何况图像处理涉及大量的矩阵计算。
服务端程序需要承受很重的访问压力。
为什么用并行
性能(相对于串行);业务模型。几个概念
活锁:两个线程互相让出资源。并发的分类:阻塞、无饥饿、无障碍、无锁、无等待。
无饥饿:公平的执行线程。
无障碍:用CAS更新数据是一种方案。
无锁:CAS即无锁。
无等待:读写锁。
提高效率
将串行程序改成并发,效率提高多少,有两个定律:Amdahl,Gustafson。两者是对同一问题的不同角度的考虑。Amdahl
Amdahl Tn = T1(F + I/n(1-F)) T:时间 n:处理器个数:CPU数量越多、串行化比重越低,优化效果越好。如果CPU数量趋于无穷,那么加速比与系统的串行化率成反比,如果系统中必须有50%的代码串行执行,那么系统的最大加速比为2。Gustafson
Gustafson S(n) = n - F(n - 1):如果串行化比例很小,并行化比例很大,那么加速比就是处理器个数。JMM
JMM技术点都围绕着多线程的原子性、可见性和有序性(指令重排序)建立的。为什么要指令重排?是减少流水线中断的一种技术,可提高CPU性能。
《流水线与指令重排序》
《JMM 重排序、内存屏障、volatile语义、AQS、final语义》
相关文章推荐
- java并发线程---线程的一些概念
- 我理解的Java并发基础(一):一些基本概念
- JAVA基础复习:涉及并发的一些基础概念
- Java并发一些概念
- 漫谈并发编程(六):java中一些经常使用的并发构件的介绍
- java一些对象概念扫盲帖(DO VO DTO PO)
- 转载一些JAVA并发的一些比较好的文章(*)
- 【JavaWeb-27】MyBatis进阶的一些概念以及与spring开发框架整合
- java并发的基本概念和级别
- 学习java并发编程实战的一些心得体会(一)
- 1.Java高并发必须要知道的几个概念(一)
- 关于java中接口概念的一些阐释
- Java回顾之一些基础概念
- Java中一些基础概念的使用详解
- spark 并发度相关的一些概念
- scala 一些概念 与 java的对比
- Java的一些基本概念
- Java高并发基础概念
- java并发:关于死锁我的一些想法