当然,我可以给你一个简单的Java线程并发`BlockingQueue`类的使用示例。在这个示例中,我们将使用`ArrayBlockingQueue`作为`BlockingQueue`的实现,并展示如何在生产者线程和消费者线程之间共享数据。
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
public class BlockingQueueExample {
// 创建一个容量为10的ArrayBlockingQueue
private static final BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);
// 生产者线程
static class Producer implements Runnable {
@Override
public void run() {
int value = 0;
try {
while (true) {
// 模拟数据生产
System.out.println("Producing " + value);
queue.put(value);
value++;
// 为了演示,这里让生产者线程暂停一下
Thread.sleep(1000);
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // 重新设置中断状态
System.out.println("Producer interrupted");
}
}
}
// 消费者线程
static class Consumer implements Runnable {
@Override
public void run() {
try {
while (true) {
// 从队列中取出数据
Integer take = queue.take();
System.out.println("Consuming " + take);
// 为了演示,这里让消费者线程暂停一下
Thread.sleep(2000);
}
} catch (InterruptedException e) {
Thread.currentThread().interrupt(); // 重新设置中断状态
System.out.println("Consumer interrupted");
}
}
}
public static void main(String[] args) {
// 创建并启动生产者线程
Thread producer = new Thread(new Producer());
producer.start();
// 创建并启动消费者线程
Thread consumer = new Thread(new Consumer());
consumer.start();
}
}
在这个示例中,我们定义了两个静态内部类`Producer`和`Consumer`,分别实现了`Runnable`接口作为生产者线程和消费者线程。`Producer`线程不断地向`BlockingQueue`中添加整数,而`Consumer`线程则不断地从队列中取出整数。我们使用`ArrayBlockingQueue`作为`BlockingQueue`的实现,并设置了容量为10。
请注意,这只是一个基本的示例,用于展示`BlockingQueue`在并发编程中的使用。在实际应用中,你可能需要根据具体的需求对代码进行适当的修改和扩展。