【发布时间】:2015-07-25 03:21:01
【问题描述】:
Buffer 类具有方法 write 和 read。缓冲区由多个线程使用。产生数据的线程使用write 方法将数据值写入缓冲区;消费数据的线程调用read 方法从缓冲区获取下一个数据值。下面的代码,在只有单线程的情况下有效,但是在多线程的情况下read和write方法不正确。
描述需要进行的 4 项更改 更正两种方法的代码,说明每次改动的效果。 (你可以写出 如果您愿意,可以使用更正后的代码,但这不是必需的。)
public class Buffer<E> {
private int maxSize ; // the maximum length of the buffer
private List<E> entries ; // the entries in the buffer
// constructor
public Buffer(int maxSize) {
entries = new ArrayList();
this.maxSize = maxSize;
}
public void write(E entry) {
entries.add(entry);
}
public E read() {
return entries.remove(0);
}
}
我的尝试
一个改变是我们需要同步来避免多个线程同时读/写,但我不确定我还能做哪些其他改变
【问题讨论】:
-
你能展示你的尝试吗?你对多线程了解多少?
-
您可以使用并发集合。或者可能是
AtomicReferenceArray。
标签: java multithreading synchronization