Java并发编程中构建自定义同步工具

这篇文章主要介绍了Java并发编程中构建自定义同步工具,本文讲解了可阻塞状态依赖操作的结构、有界缓存实现基类示例、阻塞实现方式一:抛异常给调用者、阻塞实现方式二:通过轮询和休眠、阻塞实现方式三:条件队列等内容,需要的朋友可以参考下

当Java类库没有提供适合的同步工具时,就需要构建自定义同步工具。

可阻塞状态依赖操作的结构

复制代码 代码如下:

acquir lock on object state;//请求获取锁
while(precondition does not hold){//没有满足前提条件
   release lock;//先释放锁
   wait until precondition might hold;//等待满足前提条件
   optionlly fail if interrupted or timeout expires;//因为中断或者超时执行失败
   reacquire lock;//重新尝试获取锁
}
perform action//执行
   release lock;//释放锁

有界缓存实现基类示例

复制代码 代码如下:

public class BaseBoundBuffer {
private final V[] buf;
private int tail;
private int head;
private int count;
@SuppressWarnings("unchecked")
public BaseBoundBuffer(int capacity) {
buf = (V[]) new Object[capacity];
}
public synchronized void doPut(V v) {
buf[tail] = v;
if (++tail == buf.length)
tail = 0;
count++;
}
public synchronized V doTake() {
V v = buf[head];

if (++head == buf.length)
head = 0;
count--;
return v;
}
public final synchronized boolean isFull() {
return count == buf.length;
}
public final synchronized boolean isEmpty() {
return count == 0;
}
}

以上就是Java并发编程中构建自定义同步工具的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java