1.使用wait和notifyALl实现

class Queue{
    private List<String> data = new ArrayList<>();
    private int maxSize = 10;

    public Queue(int maxSize){
        this.maxSize = maxSize;
    }

    public synchronized void enqueue(String string) throws InterruptedException {
        while(this.data.size() == this.maxSize){
            this.wait(); // 队列已满,阻塞
        }
        if(this.data.size() == 0){ // 队列为空
            this.notifyAll(); // 唤醒所有
        }
        data.add(UUID.randomUUID().toString().substring(0,4));
    }

    public synchronized String dequeue() throws InterruptedException {
        while(this.data.size() == 0){
            this.wait();
        }
        if(this.data.size() == this.maxSize){
            this.notifyAll();
        }
        return data.remove(0);
    }
}