Concurrent Programming挑战
自从它发布以来Java就提供了Thread类和低层次语言结构例如synchronized 和volatile用来开发独立平台并发应用但是用这些特性来构建并发应用并不是简单事情开发者要面对以下挑战:
不正确编程会导致些困境就是两个或两个以上线程都等待永远被锁住对方
在Java语言中没有机制用于写wait-free, lock-free算法开发者必须使用本地代码
开发者必须编写他们复杂线程池逻辑这样会很棘手并且容易出错
Java Concurrency Utilities概述
JSR-166(Java concurrency utilities)是Java5.0部分通过着重在宽度并提供跨域大范围并发编程风格重要功能大大简化了在Java中并发应用开发
Java concurrency utilities提供了多种功能开发者可以应用于更快更有预见性并发应用开发这些功能让开发者从通过写自定义代码来重新发明wheel中解放出来些JSR-166最显著特点是:
标准接口和构架来定义自定义线程子系统
是种机制用于规范标准时序安排执行和异步任务控制这是根据在Executor构架中套执行政策
是种机制通过类用于线程协调例如semaphore, mutexe, barrier, latche和 exchangers
非阻碍FIFO列队执行(ConcurrentLinkedQueue类)用于可升级有效线程安全操作
阻碍列队执行类来涵盖最常见使用情况对于生成者/消费者思路方法信息并行任务和相关并发设计
是种构架用于锁定和等待区别于内置同步和监测器条件
随时准备使用类用于在单个变量上锁定自由线程安全编程
开发个Concurrent Java Application
本节是演示如何使用Java concurrency utility API来开发个多线程在线订单电子商务应用在应用生效并授权命令的后把它们放在订单处理列队(java.util.concurrent.BlockingQueue)订单处理器线程池不断对订单进行测验而且当这些订单可以使用时进行处理
解耦应用订单处理代码提供了增加和减少订单处理率灵活性通过改变线程池大小在个并发BlockingQueue中放入订单对象确保个处理器处理个订单而且它要照顾自动同步
在以下小节中代码段是截取于伴随本文中应用源代码
="xspace-totlerecord">3="xspace-totlepages">1/3="xspace-current">123>
最新评论