在开发中常常会遇到一些数据量过大的情况因此我们需要阻塞队列来延缓服务器在高峰期接收数据的情况。同时阻塞队列也能做到解耦合的作用防止服务器之间的直接交换。接着就是我们常说的削峰补枯。
成员变量前面要加上volatile实际上是因为在下面处理高并发的时候可能会遇见你内存可见性的问题,也就是防止编译器优化出现的一系列问题(也就是编译器通过优化使得多个线程之间的数据改动了但是另一个不知道)。
在这里做一个简要的解释,如果已经放入的数据量等于数组的长度的时候,这个时候我们就进行等待,也就是队列满的时候,最后一个元素如果大于队列长度就将他置为0。
假如队列中为空,这时候就无法拿取元素就要进行等待,至于为什么要用while来,主要是除了notify以外还有一个interrupt可以唤醒,为了防止interrupt唤醒就要通过while来强制wait。
到此这篇阻塞队列(阻塞队列是线程安全的吗)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/te-aq/53109.html