【Java并发编程】一.基础
来源:互联网 发布:淘宝老瑞贸易可信吗 编辑:程序博客网 时间:2024/06/08 16:44
1.并发的用处
图像处理&服务端编程
2.概念
同步和异步
同步:同步调用方法一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。
异步:调用方法后立即返回,方法会在另一个线程中执行。调用者无需等待就可以继续后续工作。
临界区
临界区指的是一个访问共用资源的程序片段(方法或代码块),而这些共用资源又无法同时被多个线程访问的特性,当有线程进入临界区段时,其他线程或是进程必须等待。
阻塞(Blocking)
一个线程占用了临界区资源,其他线程就会等待,叫做阻塞。
死锁(Deadlock)
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。
饥饿
一个或多个线程一直无法获得所需要的资源,导致一直无法执行。
3.并发级别
阻塞:只有一个线程能够得到临界区的锁。
无饥饿:线程的执行满足于先来后到。
无障碍:不加锁,检测到冲突后进行回滚。
无锁:必然有一个线程能在有限步骤内完成操作并离开临界区。(总能保证有一个线程成功)
无等待:所有线程必须能在有限步骤内完成操作。
4.Amdahl定律和Gustafson定律
Amdahl定律
阿姆达尔曾致力于并行处理系统的研究。对于固定负载情况下描述并行处理效果的加速比s,阿姆达尔经过深入研究给出了如下公式:
S=1/(1-a+a/n)
其中,a为并行计算部分所占比例,n为并行处理结点个数。这样,当1-a=0时,(即没有串行,只有并行)最大加速比s=n;当a=0时(即只有串行,没有并行),最小加速比s=1;当n→∞时,极限加速比s→ 1/(1-a),这也就是加速比的上限。例如,若串行代码占整个代码的25%,则并行处理的总体性能不可能超过4。
Gustafson定律
Gustafson假设随着处理器个数的增加,并行与串行的计算总量也是可以增加的。Gustafson定律认为加速系数几乎跟处理器个数成正比,如果现实情况符合Gustafson定律的假设前提的话,那么软件的性能将可以随着处理个数的增加而增加。
5. Java内存模型(JMM)
JMM内存模型主要围绕着原子性,可见性和有序性来建立。
原子性
指的是一个线程一旦开始操作,不会被其他线程干扰。
可见性
一个线程修改了共享变量的值,其他线程是否可以立即知道。
有序性
- Java 并发编程 基础 一
- 【Java并发编程】一.基础
- Java并发编程基础(一)
- Java并发编程基础
- Java并发编程基础
- Java并发编程基础
- Java 并发编程 基础
- Java并发编程基础
- Java并发编程基础
- Java并发编程基础
- Java并发编程基础
- Java并发编程基础
- [JAVA] 并发编程一
- JAVA 并发编程一
- 《java并发编程实战》基础构建模块(一)
- Java并发编程(1)一基础类和接口
- 深入学习java并发编程:内存模型(一)基础
- java并发编程之线程同步基础(一)
- .NET漫游指南-011-.NET Framework中处理和引发事件
- c语言第八次练习题
- 【Mahout】Mahout-0.12.2的安装配置
- DL02-RNN学习笔记
- java实现链表
- 【Java并发编程】一.基础
- MySQL到CSV几种方法
- SpringMVC(SSM)获取网页数据和传出数据的几种方式
- 生活科技知识-物理(一)
- Redis存储RDB与AOF
- [ 李超线段树 ] BZOJ3165
- 数据库优化前章
- 常用谷歌浏览器插件
- 计算机视觉这一年:这是最全的一份CV技术报告