在研究如何使用同步缓冲区时,我需要使用Buffer接口来完成分配。我非常确定我的整个代码是正确的,除了我如何实现缓冲区。我的公共课上有一个错误代码,说#34;接口在这里预期。"提示告诉我扩展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;
答案 0 :(得分:0)
我现在明白了这个问题。我最后一次实现接口时,接口本身已从另一个文件导入。我不知道我需要实际编写接口。我认为它可能已被包含在Java框架中,如列表,集合,地图等......
我需要创建一个Buffer.java:
public interface Buffer {
public void put(int value) throws InterruptedException;
public int get() throws InterruptedException; }
@EJP和Andres。感谢发表评论。