使用Deque创建一个存放整数的队列。 创建一个生产者线程,每隔M毫秒往队列的尾部加入一个整数,所放的整数依次为1、2、3、…。 使用java创建一个消费者线程,每隔N毫秒从队列的头部取出一个整数,并将其打印出来。
时间: 2024-05-15 08:16:37 浏览: 87
代码示例:
```
import java.util.Deque;
import java.util.concurrent.LinkedBlockingDeque;
public class QueueDemo {
public static void main(String[] args) {
Deque<Integer> queue = new LinkedBlockingDeque<>();
int m = 1000; // 生产者线程每隔m毫秒生产一个整数
int n = 2000; // 消费者线程每隔n毫秒消费一个整数
// 生产者线程
Thread producer = new Thread(() -> {
int num = 1;
while (true) {
queue.offerLast(num++);
try {
Thread.sleep(m);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
producer.start();
// 消费者线程
Thread consumer = new Thread(() -> {
while (true) {
Integer num = queue.pollFirst();
if (num != null) {
System.out.println("Consumed: " + num);
}
try {
Thread.sleep(n);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
consumer.start();
}
}
```
在上面的例子中,使用了Java的LinkedBlockingDeque作为队列的实现,它是一个线程安全的双向队列。生产者线程每隔m毫秒往队列的尾部加入一个整数,消费者线程每隔n毫秒从队列的头部取出一个整数,并将其打印出来。程序会一直运行下去,直到程序被手动停止。
阅读全文