【问题标题】:How do I properly implement the Buffer interface for Java?如何正确实现 Java 的 Buffer 接口?
【发布时间】: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


【解决方案1】:

我现在明白了这个问题。上次我实现接口时,接口本身是从另一个文件导入的。我不知道我需要实际写出接口。我认为它可能已包含在 Java 框架中,如 Lists、Sets、Maps 等......

我需要创建 Buffer.java 的任何人:

public interface Buffer {
    public void put(int value) throws InterruptedException;

    public int get() throws InterruptedException; }

@EJP 和安德烈斯。感谢您发布 cmets。

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多