锁定老帖子 主题:并发控制总是必需的吗?
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (4)
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-14
最后修改:2009-04-14
免责声明: 以下观点只是一个人在特定阶段,特定场景下的胡言乱语,如有错误,并且存在误导,这个人不对此承担任何责任。
当我们初次踏入Java的世界,初次学习线程的时候,有没有想过为什么要有这个东西?为什么我写了那么些年程序,好像根本就没有更多的使用到它那? 当JSR166随着Java5的发布而姗姗来迟的时候,为什么我们对它依然那么的一往情深?没有它,我们之前不也一样活吗? 当我们阅读过林林总总的讲并发编程理论和实践的书籍之后, 《JAVA并发编程实践 》 [1 ] 也好,《Java并发编程—设计原则与模式》 [2 ] 也好, 这些书里的那些理论的本质是什么,它们又是不是放之四海而皆准那? 所有有关并发的介绍和理论,都是建立在什么东西的基础之上?如果我们仅仅局限在并发控制的世界之中(并非只是指Java的并发), 会不会有些“偏听则暗 ”之忧哪? 我们为什么需要并发控制?它能够帮助我们提高数据的处理速度,充分运用CPU? 或许这是一个方面,或者是表象,使用并发控制,最主要的一个原因,个人觉得,就是需要维护某个“共享 ”的数据状态的完整性。 也就是说,是否存在共享的数据状态,决定着我们是否需要引入并发控制。
从某个角度来说,并发控制可以分为两种:
实际上,你完全可以用数据库的乐观锁和悲观锁来类比并推演出这两种策略。 既然并发控制的存在是因为存在共享的数据状态,那么避免甚至移除这些共享的数据状态是不是就意味着能够避免并发,甚至前进到并行处理的世界那? More or less, I think. 当提到Thread confinement的时候,或者更具体一些,提到ThreadLocal的时候, 我们是不是马上就能想到,它不就是通过为每个人(线程)分配不同的数据拷贝而避免了并发控制嘛! Erlang的书买了还没看,不过,他的share-nothing的理念不正是他能够在并行处理的世界里自由驰骋的保证吗? share something, or share nothing, 这才是并发存在与否的前提,不是吗? P.S. 并发与并行计算绝对不是我这么几句闲扯就能囊括过来的,哪位要是有兴趣可以从其它角度来阐述这个问题(比如硬件的角度),俺们都洗耳恭听中,呵呵 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-14
LZ.........你看看那排版
|
|
返回顶楼 | |
发表时间:2009-04-14
gembler 写道 LZ.........你看看那排版
OK,那只是个楔子先放在那里,现在才有时间补上内容,check it now |
|
返回顶楼 | |
发表时间:2009-05-08
不太理解你的写作的意图。
并且并发提供利用率,需求决定的,这个帖子的题目有点。。。 任何东西都有利弊嘛。 |
|
返回顶楼 | |
发表时间:2009-05-09
mercyblitz 写道 不太理解你的写作的意图。
并且并发提供利用率,需求决定的,这个帖子的题目有点。。。 任何东西都有利弊嘛。 不理解就对了,因为本来就没有铺开来说。 mercyblitz 写道 并且并发提供利用率,需求决定的, 你所谓的提供利用率,一定需要并发吗?呵呵 |
|
返回顶楼 | |
浏览 2220 次