实现一个数据结构,叫做BoundedBuffer,即初始化时传入一个参数来定义了Buffer的大小,然后有两个public方法,put方法用于存入一个元素,take方法用于取出一个元素,先进先出
(1) 实现存储整型的BoundedBuffer,无需线程安全,Buffer满或空时可以抛出异常
(2) 将(1)中的整型BoundedBuffer实现改为泛型
(3)实现线程安全的BoundedBuffer,同时put和take如遇到buffer满或空的情况,需要block住调用线程,直到buffer中有空间或者有新数据
(4)给(3)的BoundedBuffer提供带超时的put或take方法,即调用者可以指定超时时间,如果在指定时间内依旧没有空间或没有新数据,则抛出异常
解答要求:请使用熟悉的语言或伪代码,底层存储只能使用数组或链表