码迷,mamicode.com
首页 > 编程语言 > 详细

多线程-并发三大定律

时间:2015-01-29 19:37:54      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:架构设计   悲观锁   乐观锁   算法   并发   

并发三大定律


Amdahl 定律
–Gene Amdahl 发现在计算机体系架构设计过程中,某个部件的优化对整个架构的优化和改善是有上限的。这个发现后来成为知名的Amdahl 定律。
比如:即使你有10个老婆,也不能一个月把孩子生下来。


Gustafson 定律
–Gustafson假设随着处理器个数的增加,并行与串行的计算总量也是可以增加的。Gustafson定律认为加速系数几乎跟处理器个数成正比,如果现实情况符合Gustafson定律的假设前提的话,那么软件的性能将可以随着处理个数的增加而增加。
比如:当你有10个老婆,就会要生更多的孩子。


Sun-Ni 定律
–充分利用存储空间等计算资源,尽量增大问题规模以产生更好/更精确的解。
比如:你要设法让每个老婆都在干活,别让她们闲着。


---------------------------------------------华丽的分割线-------------------------------------


1. Future是做什么用的?


参考:http://blog.csdn.net/simonchi/article/details/8181571


2. Lock和synchronized的区别是什么?


Synchronized是Lock的一种简化实现,一个Lock可以对应多个Condition,而synchronized把Lock和Condition合并了,一个synchronizedLock只对应一个Condition,可以说Synchronized是Lock的简化版本。
在JDK5,Synchronized要比Lock慢很多,但是在JDK6中,它们的效率差不多。


参考:http://blog.csdn.net/tangkai177/article/details/7451797


3. 并发编程 什么是CAS?(CAS 全称是 Compare and Swap)


可以用CAS在无锁的情况下实现原子操作,但要明确应用场合,非常简单的操作且又不想引入锁可以考虑使用CAS操作,当想要非阻塞地完成某一操作也可以考虑CAS。不推荐在复杂操作中引入CAS,会使程序可读性变差,且难以测试,同时会出现ABA问题。


参考:http://my.oschina.net/lifany/blog/133513
参考:http://blog.csdn.net/aesop_wubo/article/details/7537960




4、Lock-Free算法的三个组成部分是什么?


通常都是三个部分组成:
①循环
②CAS (CompareAndSet)
③回退


---------------------------------------------华丽的分割线-------------------------------------


JDK 1.5之后有了ScheduledExecutorService,不建议你再使用java.util.Timer,因为它无论功能性能都不如ScheduledExecutorService


悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。[1] 乐观锁不能解决脏读的问题。
参考:http://www.cnblogs.com/guyufei/archive/2011/01/10/1931632.html


相关文档:
http://en.wikipedia.org/wiki/Monitor_(synchronization)

多线程-并发三大定律

标签:架构设计   悲观锁   乐观锁   算法   并发   

原文地址:http://blog.csdn.net/u011742227/article/details/43274257

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!