Java高并发笔记

并发的概念

·阻塞
·非阻塞:
    1.无障碍
    2.无锁
    3.无等待
阻塞
只允许一个线程访问临界区(共享资源)。
非阻塞:
    允许多个线程进入临界区。非阻塞下的无障碍、无锁以及无等待方式是对于释放资源的约束条件不同。
    【无障碍】又被成为乐观锁。无竞争时,线程能在有限的步骤内完成操作。而有竞争的时候则回滚数据,尝试重新发起操作。
    【无锁】是在无障碍的基础上,保证每一次竞争有一个线程能胜利,并完成操作,可避免活锁的情况(多个线程因只能获取部分资源而无法进行操作,而陷入循环进出临界区的情况)。
    【无等待】是无锁的基础上,要求每个线程都必须在有限的步骤内完成操作。所以也必定是无饥饿的。

并行的两个定律

Amdahl(阿姆达尔定律)

【加速比】=1/F-[(1-F)*1/n]
其中F为程序中串行模块的比重
n为处理器的个数
要点
只有提高并行模块的比重再合理地添加处理器才能以最小的投入,提高加速比。 

Gustafson(古斯塔夫森定律)

执行时间: 串行时间+并行时间 (a+b)
总执行时间: 串行时间+处理器个数*并行时间 (a+n*b)
加速比:总执行时间/执行时间 (a+b)/(a+n*b)

定义:F=串行时间/执行时间 (串行比例 F = a/a+b)
则加速比S(n)=(a+n*b)/(a+b)=a/(a+b) +n*b/(a+b)
           =F+n[(a+b-a)/(a+b)]
           =F+n[1-(a/a+b)]
           =F+n(1-F)
           =F+n-nF
           =n-F(n-1)
要点
串行比例很小的时候,加速比和CPU的个数是成正比的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值