Queue 是一端进另一端出的线性数据结构;而 Deque 是两端都可以进出的 Queue Java 中的 这个 Queue 接口稍微有点坑,一般来说队列的语义都是先进先出(FIFO)的。 但是这里有个例外,就是 PriorityQueue,也叫 heap,并不按照进去的时间顺序出来,而是按照规定的优先级出去,并且它的操作并不是 O(1) 的,时间复杂度...
存储监听器的具体数据结构要视问题而定,比如对于这里的动物园问题,如果监听器有优先级, 那就应该选择其他的数据结构,或者重写监听器的register算法。 注册和移除的实现都是简单的委托方式:各个监听器作为参数从监听者的 监听列表增加或者移除。notify函数的实现与观察者模式的标准格式稍微偏离,它包括输入参数:新增加的an...
等待队列(Wait Queue):主要用于存放等待线程获取到的锁资源,并且把线程维护到一个Node(节点)里面和维护一个非阻塞的CHL Node FIFO(先进先出)队列,主要是采用自旋锁+CAS操作来保证节点插入和移除的原子性操作。 条件队列(Condition Queue):用于实现锁的条件机制,一般主要是指替换“等待-通知”工作机制,主要是通过Cond...