java 用arrayblockingQueue编写一个线程向一个4位循环缓冲区中循环写入1-10的随机数,另一个线程将循环缓冲区中数据取出打印出来
时间: 2024-02-21 11:58:46 浏览: 50
好的,我来为您编写代码。
```java
import java.util.Random;
import java.util.concurrent.ArrayBlockingQueue;
public class MyBuffer {
private static final int BUFFER_SIZE = 4;
private ArrayBlockingQueue<Integer> buffer;
public MyBuffer() {
buffer = new ArrayBlockingQueue<>(BUFFER_SIZE);
}
public void write() {
Random rand = new Random();
while (true) {
try {
buffer.put(rand.nextInt(10) + 1);
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void read() {
while (true) {
try {
int data = buffer.take();
System.out.println("Read: " + data);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyBuffer myBuffer = new MyBuffer();
Thread writer = new Thread(() -> myBuffer.write());
Thread reader = new Thread(() -> myBuffer.read());
writer.start();
reader.start();
}
}
```
这个程序创建了一个大小为4的 ArrayBlockingQueue,用于存储1到10之间的随机数。write方法是一个无限循环,它在每次循环中将一个随机数放入缓冲区中,然后休眠1秒钟。read方法也是一个无限循环,它从缓冲区中取出一个数并打印出来。最后在main方法中创建了两个线程,一个用于写入数据,一个用于读取数据,然后启动这两个线程。
希望这个程序能够满足您的需求,如果您有任何问题,请随时问我。
阅读全文