java线程并发包util.concurrent的研究(一)

线程并发包util.concurrent的研究(一)
1.简介:
         编写调度和并发基础结构类的确要比看上去难。Java 语言提供了一组有用的低级同步原语:wait()notify()synchronized,但具体使用这些原语需要一些技巧,需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素。并发代码难以编写,更难以测试 — 即使专家有时在第一次时也会出现错误。Concurrent Programming in Java(请参阅
参考资料 )的作者 Doug Lea 编写了一个极其优秀的、免费的并发实用程序包,它包括并发应用程序的锁、互斥、队列、线程池、轻量级任务、有效的并发集合、原子的算术操作和其它基本构件。人们一般称这个包为 util.concurrent(因为它实际的包名很长),该包将形成 Java Community Process JSR 166 正在标准化的 JDK 1.5 中 java.util.concurrent 包的基础。同时,util.concurrent 经过了良好的测试,许多服务器应用程序(包括 JBoss J2EE 应用程序服务器)都使用这个包。

 

2.设计目标:
翻译自http://gee.cs.oswego.edu/dl/cpjslides/util.pdf

    1).  提供一些简单易用的借口:虽然覆盖面达到了大多数程序员的要求,但是有时还需要自己写一些代码。

    2).  高质量的实现:正确、传统、有效、可移植。

    3).  为未来标准化提供基础:获得经验并收集反馈。

 

3.结构:

类接口+附有子类的实现设计大体分为三大部分:SyncChannelExecutor


这个包的结构是按照以下层次构架的:Atomic->Sync->Channel->Executor。
Atomic:实现了针对各种对象的原子操作CAS(compareAndSwtich)。
Sync:基于Atomic实现了线程同步的各种锁定机制-互斥锁、信号灯等。
Channel:使用Sync提供的锁机制实现了各种任务队列-阻塞队列、链表队列、优先级队列等。
Executor:提供了多种线程管理方式-线程池等。这些管理方式是基于Channel所提供的任务队列来实现。

4.  Executor与其它类的关系图:

在后面的章节中将详细介绍每个部分。
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值