我也谈谈java并发程序设计的现状和前景 -乐鱼入口

最近我也是在涉及并发java方面的东西, 说说我的心得.

确实到了并发盛行的时期了, 我觉得最重要的原因还是多核处理器及其硬件体系的日趋成熟, 并且成本摊薄到大众价格了.

j.u.c 包主要是为了性能来的, 其设计其实不如java传统的内置同步机制(synchronized块和方法, 以及 object.wait(); object.notify())优雅, 但是传统同步机制的最大弊病就是不区分共享同步(一般是并发的读操作) 与 互斥同步 (一般是写操作), 所有同步都只能是完全排他的,只要有并发写的可能性就不得不把全部读操作也互斥同步,从而丧失并发读取的可能性. 这跟大多数应用的并发模式(读远多过于写)存在严重偏离, 以至于硬件新增长出来的并发能力在普通应用中将被大部分折扣掉, 这个是不可能被应用软件开发市场容忍的. 同时传统同步机制也有一些灵活性方面的弊病, 比如 object.wait(); object.notify(); 必须在该对象的同步块内执行 (否则会抛illegalmonitorstateexception), 并且一个对象只能wait/notify一个状态. j.u.c 类通过让一个lock可以建多个condition去wait/notify增强了灵活性.

但是抛开性能和灵活性不管, 如果传统java同步机制能够实现的话, 它还是更优雅的, 你永远没法写出加锁以后忘记解锁的代码, 因为不匹配的 {} 会产生编译错误. 同时已经有相当多的科研力量, 投入到降低传统同步机制在单线程情况下最小化同步开销的研发工作中, 使得现在的jvm执行同步块时, 如果是单线程情况, 效率非常高. 不过作为代价, 多线程情况下却要比合理想像到的性能更低.

excector、scheduleexecutorservice、future、blockingqueue这些其实就是目前构建应用服务器的building block, 现在作为标准类库提供, 有利于发展出更优秀的java框架, 但是主流应用开发是否也会架构于这些相对基层的工具库之上, 我个人还是抱观望态度.

j.u.c 库确实比原来的 dl.u.c 库性能会高, 因为 dl.u.c 是构建在java传统同步机制之上的, 而 j.u.c 是将其移植到了最新 jvm 的并发支持特性之上 (通过 sun.misc.unsafe 与hotspot vm打交道, 直接产生宿主cpu支持的原子内存访问指令), 可以认为是从软件实现升级成了硬件实现, 其性能差别可想而知.

面向分布式并行计算/并发的应用程序设计方向上, 我在搞一个apache协议开源的框架, 叫 hosting based interfacing, 目前已经实现了 java 的服务器端和 flex/actionscript3 的客户端. 大家有兴趣不妨看看 , 如果有时间精力一起研究发展当然最好了.
10
2
评论 共 3 条 请登录后发表评论
3 楼 2014-06-27 13:20
除非传统的同步方式不能满足需求,否则没有理由去用juc里面的东西,《并发编程实践里》说的
2 楼 2014-02-25 17:37
传统的内置锁也是有优点的,起码代码写起来不凌乱, 以后由jdk1.6内置锁的性能可以看出未来版本的jdk肯定会继续优化内置锁的。
在我看来外置锁除了性能之外,更加的面向oo。在业务相对复杂的并发系统中,外置锁的优势是不言而喻的。
1 楼 2011-04-26 10:20
所有同步都只能是完全排他的,只要有并发写的可能性就不得不把全部读操作也互斥同步,从而丧失并发读取的可能性. 这跟大多数应用的并发模式(读远多过于写)存在严重偏离,

精辟!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 只要有并发写的可能性就不得不把全部读操作也互斥同步 , 从而丧失并发读取的可能性 . 这跟大多数应用的并发模式 ( 读远多过于写 ) 存在严重偏离 , 以至于硬件新增长出来的并发能力在普通应用中将被大...

  • 线上阅读平台 的系统项目的概述设计分析,主要内容有线上阅读平台的具体分析,进行数据库的是设计,数据采用mysql数据库,并且对于系统的设计采用比较人性化的操作设计,对于系统出现的错误信息可以及时做出处理及...

  • 对于工作多年的程序员而言,日后的职业发展无非是继续专精技术、转型管理和晋升架构师三种选择。架构师在一家公司有多重要、优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来分析程序员如何才能晋升为...

  • java 20 年:转角遇到 go ...可以说,java 将编程语言设计带领到一个新的高度。20 年后的今天,当年的那些新特性已经不再是什么新鲜词。同时,又会有一些新的语言宣称自己有一些颠覆性的特性,其中 go 语言...

  • 一位资深 架构师大牛给予java技术提升的学习路线建议对于工作多年的程序员而言,日后的职业发展无非是继续专精技术、转型管理和晋升架构师三种选择。架构师在一家公司有多重要、优秀架构师需要具备怎样的素质以及...

  • 2019最热门的软件测试趋势 毛哥(译) 放眼全球,了解技术发展的边界和趋势,有助于组织和个人的发展及竞争力的...2019年也将标志着技术和数字化转型的巨大变化,从而要求组织不断创新和重塑自我。 #1)敏捷与d...

  • 5、c 客户端开发 5.1、国产化操作系统和国产化cpu 5.2、客户端ui技术 最近看到大家在讨论c 开发语言的学习价值与发展前景,今天作为c/c 软件开发的多年从业者,来谈谈我的理解和认识,给大家提供一个借鉴和参考...

  • 黄勇(博客),从事近十年的 javaee 应用开发工作,现任阿里巴巴公司系统架构师。对分布式服务架构与大数据技术有深入研究,具有丰富的 b/s 架构开发经验与项目实战经验...我的十年技术之路csdn:请和大家介绍下你和...

  • 运维工程师的职责和前景 运维中关键技术点解剖:1 大量高并发网站的设计方案;2 高可靠、高可伸缩性网络架构设计;3 网站安全问题,如何避免被黑?4 南北互联问题,动态cdn乐鱼app官网的解决方案;5 海量数据存储架构一、什么是...

  • 零售云是阿里三朵业务云:零售云、金融云和政务云之一,将开辟阿里在电商、零售行业的新蓝海,2b快速交付、赋能乐鱼app官网的合作伙伴更快业务增长和节省成本。云原生是零售云的最重要的技术底座,云原生是什么,...

  • 1 大量高并发网站的设计方案 ; 2 高可靠、高可伸缩性网络架构设计; 3 网站安全问题,如何避免被黑? 4 南北互联问题,动态cdn乐鱼app官网的解决方案; 5 海量数据存储架构 一、什么是大型网站运维? 首先明确一下,...

  • 基于asp的文件批量上传客户端免费组件.zip

  • 高精地图的匹配定位算法

  • 手工盲注辅助注入工具blind-sql-injector.zip

  • 统计表与统计图.pdf

  • matlab---微穿孔板吸声系数matlab仿真代码

  • sccm安装详细版sccm安装详细版

  • 基于“1 x证书制度”下课证融通研究——以建筑工程技术专业为例课题申报论证开题设计报告.pdf

global site tag (gtag.js) - google analytics
网站地图