java多线程与高并发的快速入门指南
2016-11-08 14:56
471 查看
并行世界的入门指南
并行计算主要适用于:图像处理+服务端编程(主要是java)。性能翻倍的摩尔定律失效,软件开发为硬件设计者的无计可施所采取的多核cpu策略埋单。
同步/异步:同步需要等待调用结束才可以执行下一步,异步无需等待,类似消息,发出去了就去干别的事情了。
并发/并行:并发偏重多任务交替执行,并行是真正意义上的同时执行(必须多核CPU,因为一个CPU一次只能执行一条指令,操作系统只能不停的切换任务来并发)。
临界区:公共资源和共享数据,不可以被多线程同时占用。
阻塞和非阻塞:阻塞是线程因等待资源而挂起。非阻塞反之。
死锁、饥饿、活锁:多线程的活跃性问题。死锁是都占着资源死不撒手(最糟糕),饥渴是弱肉强食的不同优先级,活锁是都冲突时都谦让导致谁都拿不到。
并发级别:阻塞(synchronized/重入锁),无饥饿(公平和非公平锁),无障碍(最弱,冲突则回滚,实现策略是“一致性标记”),无锁(至少一个线程会ok,可能会出现类似饥饿的无穷循环),无等待(所有的线程都在有限步内完成,对循环次数的不同分为有界无等待和线程数无关的无等待;典型的例子有RCU,即Read-Copy-Update)。
并行的两个定律:加速比Amdahl、加速比Guwtafson。
加速比Amdahl = 优化前系统耗时/优化后系统耗时 = 1/(串行的比例+(1-串行的比例)/处理器的个数)
加速比Guwtafson=优化前系统耗时/优化后系统耗时=处理器个数-串行比例*(处理器个数-1)
JMM(java的内存模型)的关键技术都是围绕多线程的原子性、可见性和有序性来建立的。
指令不能重排的Happen-Before规则,都是为了不破坏原有的语义结构。
相关文章推荐
- 【JAVA秒会技术之多线程】Java 并发工具包 java.util.concurrent 用户指南
- 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南
- Gradle 教程说明 用户指南 第7章 构建Java工程----快速入门
- Java9特性预览Jigsaw:模块化系统快速入门指南
- Java核心技术及面试指南 多线程并发部分的面试题总结以及答案
- Java并发/多线程指南
- NetBeans IDE 6.0 Java 快速入门指南
- Gradle 教程说明 用户指南 第7章 构建Java工程----快速入门
- Java多线程快速入门
- Gradle2.0用户指南翻译——第七章. Java 快速入门
- java 多线程快速入门
- 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南
- Java多线程 快速入门(二)
- Java多线程 快速入门(一)
- NetBeans IDE 4.1 快速入门指南JAVAV工程师权威认证
- java多线程和并发包入门示例
- Castle ActiveRecord学习实践(1):快速入门指南
- Java加密和数字签名编程快速入门
- NetBeans IDE 4.1 快速入门指南
- NetBeans IDE 5.0 快速入门指南