首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
多线程-并发三大定律
时间:
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
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!