【发布时间】:2016-02-15 10:57:27
【问题描述】:
在学习如何使用同步缓冲区时,我需要使用 Buffer 接口来完成分配。我很确定我的整个代码都是正确的,除了我如何实现缓冲区。我在公共课上收到错误代码,上面写着“此处需要接口”。提示告诉我扩展 Buffer 而不是实现它。有人对我缺少什么有任何想法吗? (这是 4 个类中的 1 个)。
package synchronizedbuffer;
public class SynchronizedBuffer implements Buffer {
private int buffer = -1;
private boolean occupied = false;
public synchronized void put(int value) throws InterruptedException {
while(occupied) {
System.out.println("Producer tries to write.");
displayState("Buffer full. Producer waits");
wait();
}
buffer = value;
occupied = true;
displayState("Producer writes " + buffer);
notifyAll();
}
public synchronized int get() throws InterruptedException {
while(!occupied) {
System.out.println("Consumer tries to read");
displayState("Buffer empty. Consumer waits");
wait();
}
occupied = false;
displayState("Consumer reads" + buffer);
notifyAll();
return buffer;
}
private synchronized void displayState(String operation) {
System.out.printf("%-40s%d\t\t%b%n%n", operation, buffer, occupied);
}
}
编辑::我编辑了代码以删除导入 java.nio.Buffer;
【问题讨论】:
-
嗯?
java.nio.Buffer是一个类,而不是一个接口。为什么你认为你需要自己写? -
@EJP 而
Buffer构造函数是包私有的,所以你不能实现你自己的。 OP 一定是误解了家庭作业的某些部分。 -
我觉得我是。我使用了 Java.nio.Buffer;因为 IDE 暗示这是我修复原始错误所需要的。我最初得到错误“找不到符号符号:类缓冲区缺少 javadoc”我添加了 java.nio.Buffer 并得到了我上面解释的错误。
-
我怀疑为分配提供了 Buffer 接口。否则,您需要寻求澄清。
-
编辑后,您现在有什么问题?
标签: java interface synchronization buffer implements