在这里贴一下有界阻塞队列的实现代码,总结一下自己的理解。底层用的是数组,其实就是一个循环队列。适合对并发时的数据处理。
代码
|
|
测试
这里取两次,第一次就取完了,第二次就在等待放入数据。
结论
举一个简单的栗子说明,假设服务器或对外提供的接口并发的最高峰值访问是60,这时突然有80个访问请求需要处理。阻塞队列的应用场景就出现了。主要的作用与目的,就是起到缓冲的作用。存一个,取一个。在代码实现时,判断队列是否已经放满了和判断队列是否已经取空了时用了while,这是一个小小的细节。在等待 Condition 时,允许发生“虚假唤醒”,这通常作为对基础平台语义的让步。