```java
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class BlockQueue {
List<Object> list=new ArrayList<>();
private Lock lock=new ReentrantLock();
private Condition put=lock.newCondition();
private Condition take=lock.newCondition();
private int length;
public BlockQueue(int length) {
this.length = length;
}
public void put(Object obj){
lock.lock();
if(list.size()<length){
list.add(obj);
System.out.println("向队列中放元素");
return;
}else{
try {
put.await();//挂起
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
lock.unlock();
}
}
}
public void take(){
lock.lock();
try {
while (true)
{
if(list.size()>0){
Object O= list.remove(0);
System.out.println("队列中拿元素");
put.signal();
return ;
}else {
take.await();
}
}
} catch (Exception e) {
e.printStackTrace();
}finally {
lock.unlock();
return ;
}
}
}
一个简单的阻塞队列
最新推荐文章于 2024-08-15 14:47:41 发布
本文介绍了如何在Java中实现一个简单的阻塞队列。通过使用`java.util.concurrent`包中的`BlockingQueue`接口,我们可以创建高效并发的队列操作。内容涵盖了入队、出队操作,以及阻塞队列在多线程环境中的应用和同步原理解析。
摘要由CSDN通过智能技术生成