java多线程:多线程Java 应用程序构建

        大多数服务端应用都需要同时处理任务能力这样可以提高工作性能并增加硬件资源利用在早期Java版本(1.4或更早)中开发者需要完成并发(concurrent)应用——包括线程池逻辑—他们自己使用是低层次语言结构和Java Thread API但是结果却总是不理想Java Thread API特性会导致不知情编程者开发些难以调试编程代码   在Java5.0中Sun公司采用了Java concurrency功能(JSR-166)来解决这些问题并且提供了套标准APIs来创建并开发应用本文探究了些Java concurrency package提供特性并使用这些功能来演示编写并发应用技术

  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>
Tags:  java多线程例子 javasocket多线程 java多线程编程 java多线程

延伸阅读

最新评论

发表评论