阅读更多
最近我也是在涉及并发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 的客户端. 大家有兴趣不妨看看 http://hbi.googlecode.com, 如果有时间精力一起研究发展当然最好了.
10
2
评论 共 3 条 请登录后发表评论
3 楼 young7 2014-06-27 13:20
除非传统的同步方式不能满足需求,否则没有理由去用juc里面的东西,《并发编程实践里》说的
2 楼 cha_bill 2014-02-25 17:37
传统的内置锁也是有优点的,起码代码写起来不凌乱, 以后由jdk1.6内置锁的性能可以看出未来版本的jdk肯定会继续优化内置锁的。
在我看来外置锁除了性能之外,更加的面向OO。在业务相对复杂的并发系统中,外置锁的优势是不言而喻的。
1 楼 huhang1986 2011-04-26 10:20
所有同步都只能是完全排他的,只要有并发写的可能性就不得不把全部读操作也互斥同步,从而丧失并发读取的可能性. 这跟大多数应用的并发模式(读远多过于写)存在严重偏离,

精辟!

发表评论

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

相关推荐

  • 谈谈JAVA并发程序设计现状和发展前景

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

  • ssm基于java的线上阅读平台的设计与实现毕业设计源码291023

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

  • 阿里Java架构师谈谈架构和如何成为一个Java架构师,如何通过学习让自己快速从初级进阶高级和架构师...

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

  • 软件测试前景和发展方向

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

  • 速读原著-Java20年: 转角遇到GO

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

  • 从实现原理谈谈低代码

    点击上方“朱小厮的博客”,选择“设为星标”后台回复"书",获取后台...这些年调研过了几乎所有市面上的相关技术和产品,发现虽然每家产品细节都不太一样,但在底层技术上却只有少数几种方案,因此我们认为不同产品...

  • 一位资深 架构师大牛给予Java技术提升的学习路线建议

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

  • C++没落了?学习C++没有前途了?从业者给你揭晓答案

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

  • 一位10年Java工作经验的架构师聊Java和工作经验

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

  • 运维工程师的职责和前景  

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

  • 谈谈我对零售云在云原生总结与思考

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

  • 运维工程师的职责和前景

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

  • 安装NumPy教程-详细版

    附件是安装NumPy教程_详细版,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

  • 语音端点检测及其在Matlab中的实现.zip

    语音端点检测及其在Matlab中的实现.zip

  • C#文档打印程序Demo

    使用C#完成一般文档的打印,带有页眉,页脚文档打印,表格打印,打印预览等

  • DirectX修复工具-4-194985.zip

    directx修复工具 DirectX修复工具(DirectX repair)是系统DirectX组件修复工具,DirectX修复工具主要是用于检测当前系统的DirectX状态,若发现异常情况就可以马上进行修复,非常快捷,使用效果也非常好。

  • Python手动实现人脸识别算法

    人脸识别的主要算法 其核心算法是 欧式距离算法使用该算法计算两张脸的面部特征差异,一般在0.6 以下都可以被认为是同一张脸 人脸识别的主要步骤 1 获得人脸图片 2 将人脸图片转为128D的矩阵(这个也就是人脸特征的一种数字化表现) 3 保存人脸128D的特征到文件中 4 获取其他人脸转为128D特征通过欧式距离算法与我们保存的特征对比,如果差距在0.6以下就说明两张脸差距比较小

  • 全国大学生信息安全竞赛知识问答-CISCN 题库.zip

    ciscn 全国大学生信息安全竞赛知识问答-CISCN 题库.zip

Global site tag (gtag.js) - Google Analytics