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

线程并发包util.concurrent的研究(一) 1.简介: 编写调度和并发基础结构类的确要比看上去难。Java 语言提供了一组有用的低级同步原语:wait()、 notify() 和 synchronized,但具体使用这些原语需要一些技巧,需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的危害等诸多因素。并发代码难以编写,更难以测试 — 即使专家有时在第一次时也会出现错误。Concurrent Programming in Java(请参阅

2.设计目标: 翻译自

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

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

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

3.结构:

类接口+附有子类的实现设计大体分为三大部分:Sync,Channel,Executor。


这个包的结构是按照以下层次构架的:Atomic->Sync->Channel->Executor。 Atomic:实现了针对各种对象的原子操作CAS(compareAndSwtich)。 Sync:基于Atomic实现了线程同步的各种锁定机制-互斥锁、信号灯等。 Channel:使用Sync提供的锁机制实现了各种任务队列-阻塞队列、链表队列、优先级队列等。 Executor:提供了多种线程管理方式-线程池等。这些管理方式是基于Channel所提供的任务队列来实现。 4. Executor与其它类的关系图: 在后面的章节中将详细介绍每个部分。
经验分享 程序员 微信小程序 职场和发展