14.6 阻塞队列 可考虑使用队列来处理线程问题,比如银行问题可用一个队列来插入进行转账,这样银行问题就无需考虑同步。 常用方法: 阻塞方法: put 队尾添加元素(注意!满阻塞)
14.6 阻塞队列
可考虑使用队列来处理线程问题,比如银行问题可用一个队列来插入进行转账,这样银行问题就无需考虑同步。
常用方法:
阻塞方法:
put 队尾添加元素(注意!满阻塞)
take 队头移出元素(注意!空阻塞)
非阻塞无异常方法:
offer 添加返回是否成功,队未满true,队满false
peek 返回队头元素(不移除),空返回null
poll 队头移出元素,空返回null
空移除满添加抛异常:
add 添加到队尾,队满抛异常
elment 返回队头元素(不移除),空抛异常
remove 队头移出元素,空抛异常
阻塞队列的常见类:
LinkedBlockingDeque: 没有上边界,是双端队列
ArrayBlockingQueue: 需要指定容量,可以选是否公平(公平性能更低,长时间等待的线程会先处理)
PriorityBlockingQueue: 待优先级的队列,按照优先级顺序移除(可以学CPU多级反馈,处理次数多的优先级变低)
书作者给的示例:
❤