最近我也是在涉及并发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, 如果有时间精力一起研究发展当然最好了.
分享到:
相关推荐
《Java并发程序设计教程》是一本深入探讨Java平台上的并发编程技术的专业书籍。并发和多线程是现代软件开发中的核心概念,特别是在Java这样的多线程支持强大的编程语言中。这本书详细介绍了如何在Java环境中有效地...
在Java编程领域,并发程序设计是一项至关重要的技能,特别是在多核处理器和分布式系统环境中。Java提供了丰富的并发工具和API,使得开发者能够有效地编写出高效、安全的并发应用程序。本教程将深入探讨Java并发编程...
《Java高并发程序设计》是一本深入探讨Java平台上的并发编程技术的专业书籍,由葛一鸣等人编著。这本书旨在帮助读者理解并掌握在高并发环境下编写高效、稳定且可扩展的Java应用程序的关键技巧和最佳实践。以下是该书...
《Java并发程序设计教程》是一份详尽的指南,旨在帮助开发者掌握Java中的并发编程技巧。这份教程由温绍锦(昵称:温少)编写,涵盖了从基础到高级的各种并发概念和技术,对于希望深入理解并应用Java多线程机制的开发...
通过学习“Java并发编程设计原则和模式”,开发者可以更好地理解和应用这些概念,编写出高效、可靠的并发程序。理解并熟练掌握这些知识,对于提升Java程序员的技能水平和解决实际问题的能力至关重要。
Java并发程序设计是Java开发中的重要领域,它涉及到如何在多线程环境下高效、安全地执行代码。在Java中,并发编程主要通过类库、工具和技术来实现,这些包括线程、锁、同步机制以及并发容器等。下面将详细介绍Java...
java并发程序设计是指编写正确的并发程序的技术和方法。并发程序相比顺序执行的程序更容易出现错误,因此了解java并发程序设计的原理和方法是非常重要的。在java语言中,线程是不可避免的特性,它们把复杂、异步的...
Java并发程序设计是Java开发中的重要领域,尤其在多核处理器和分布式系统中,有效利用并发可以极大地提高软件系统的性能和响应速度。本教程将深入探讨Java并发编程的关键概念、工具和技术。 首先,我们从“Java并发...
《JAVA并发程序设计实践》是一本深度探讨Java平台上的多线程编程的书籍,它针对的是那些希望在实际项目中高效、安全地实现并发处理的开发者。这本书详细讲解了Java并发编程的基础理论以及实战技巧,旨在帮助读者理解...
实战Java高并发程序设计课是一门针对Java开发者的培训课程,重点关注如何设计和优化高并发的程序。学员将学习到并发编程的基本概念、线程池的使用、锁机制、并发集合等技术,并通过实际案例进行实践操作。这门课程...
java 并发变成设计原则与模式第二版 PDF版本,下载即看
《Java并发编程实战》是Java并发编程领域的一本经典著作,它深入浅出地介绍了如何在Java平台上进行高效的多线程编程。这本书的源码提供了丰富的示例,可以帮助读者更好地理解书中的理论知识并将其应用到实际项目中。...
它详细介绍了如何在Java环境中有效地实现多线程程序和并发控制机制。在Java平台上,由于其本身提供了强大的并发编程支持,因此,掌握并发编程对于提高Java应用的性能和响应能力至关重要。 书中会首先介绍Java并发...
ORACLE EBS JAVA Concurrent Program开发手册,开发范例,任何版本EBS都适应,不过要在对应版本的Jdeveloper
《面向对象程序设计JAVA语言程序设计》涵盖了 Java 语言的基础知识点、设计原则、编程风格、多线程和并发、网络和 Web 编程、异常处理、安全和可靠性、Applet 和应用程序、设计模式、测试和调试等多方面的内容。
java高并发程序设计视频全集,并发场景,死锁,活锁,阻塞,非阻塞...