00-实战Java高并发程序设计-前言

2017-12-26  本文已影响0人  stellarxiong

课程基础

需要有java使用经验

为什么需要并行

几个重要的概念

同步(synchonous)和异步(asynchonous)

image

并发(Concurrency)和并行(Parallelism)

image

临界区

临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。


2.jpg

阻塞(Blocking)和非阻塞(Non-Blocking)

锁(Deadlock)、饥饿(Starvation)和活锁(Livelock)

image

并行的级别

阻塞

当一个线程进入临界区后,其他线程必须等待

非阻塞

无障碍
无锁
while (!atomicVar.compareAndSet(localVar, localVar+1)) 
{ 
       localVar = atomicVar.get(); 
} 
无等待

2个重要的定理

Amdahl定律(阿姆达尔定律)

加速比=优化前系统耗时/优化后系统耗时=500/400=1.25

image
增加CPU处理器的数量并不一定能起到有效的作用,提高系统内可并行化的模块比重,合理增加并行处理器数量,才能以最小的投入,得到最大的加速比

Gustafson定律(古斯塔夫森)

只要有足够的并行化,那么加速比和CPU个数成正比

来源 炼数成金 葛一鸣 博客地址:http://www.uucode.net/

上一篇下一篇

猜你喜欢

热点阅读