java 写一段数据池代码
时间: 2024-03-23 12:39:00 浏览: 113
以下是一个基于 Java 的简单数据池实现,用于存储和管理一些对象,可以供多个线程共享使用:
```java
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
public class DataPool<T> {
private final BlockingQueue<T> queue = new LinkedBlockingQueue<>();
public void put(T data) throws InterruptedException {
queue.put(data);
}
public T take() throws InterruptedException {
return queue.take();
}
}
```
该数据池使用了 Java 的 BlockingQueue 接口,它是一个阻塞队列,可以在队列为空或队列已满时自动阻塞线程。这样可以确保多个线程可以安全地访问和修改数据池中的对象。
使用该数据池的示例代码如下:
```java
public class DataPoolDemo {
public static void main(String[] args) throws InterruptedException {
DataPool<String> pool = new DataPool<>();
// 生产者线程
new Thread(() -> {
try {
pool.put("Data 1");
pool.put("Data 2");
pool.put("Data 3");
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
// 消费者线程
new Thread(() -> {
try {
System.out.println(pool.take());
System.out.println(pool.take());
System.out.println(pool.take());
} catch (InterruptedException e) {
e.printStackTrace();
}
}).start();
}
}
```
在这个示例中,我们创建了一个数据池对象 pool,并启动了一个生产者线程,用于将数据放入数据池中。同时,我们也启动了一个消费者线程,用于从数据池中获取数据并打印输出。由于数据池使用了阻塞队列,因此在数据池为空时,消费者线程会自动阻塞等待,直到有数据可用。
阅读全文