首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

状态依托的类-JCIP C14.1读书笔记

2012-09-05 
状态依赖的类--JCIP C14.1读书笔记[本文是我对Java Concurrency In Practice C14.1的归纳和总结. ?转载请

状态依赖的类--JCIP C14.1读书笔记

[本文是我对Java Concurrency In Practice C14.1的归纳和总结. ?转载请注明作者和出处, ?如有谬误, 欢迎在评论中指正. ]?

java类库中包含许多状态依赖的类: 其中的某些方法只有满足特定的前置条件才能继续, 比如BlockingQueue的take方法, 只有队列不为空时take方法才能返回.

状态依赖的操作一般如下:

public class BoundedBuffer<V> extends BaseBoundedBuffer<V> {public BoundedBuffer(int size) {super(size);}public synchronized void put(V v) throws InterruptedException {// 当缓冲区已满时将线程挂起, 等待其他线程唤醒// 不给唤醒之后再次判断缓冲区是否已满while (isFull()) {wait();}doPut(v);// 操作完成后唤醒其他线程notifyAll();}public synchronized V take() throws InterruptedException {// 当缓冲区为空时将线程挂起, 等待其他线程唤醒// 被唤醒之后再次判断缓冲区是否为空while (isEmpty()) {wait();}V v = doTake();// 操作完成后唤醒其他线程notifyAll();return v;}}?

BoundedBuffer已经比较完美了, 相比于SleepyBoundedBuffer, 其具有更好的响应性, 更高的CPU效率以及更少的上下文切换.

?

热点排行