如何正确实现Java的Buffer接口?

时间:2015-11-13 18:53:55

标签: java interface synchronization buffer implements

在研究如何使用同步缓冲区时,我需要使用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;

1 个答案:

答案 0 :(得分:0)

我现在明白了这个问题。我最后一次实现接口时,接口本身已从另一个文件导入。我不知道我需要实际编写接口。我认为它可能已被包含在Java框架中,如列表,集合,地图等......

我需要创建一个Buffer.java:

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

    public int get() throws InterruptedException; }

@EJP和Andres。感谢发表评论。