电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java ArrayBlockingQueue的方法及缺點分析

瀏覽:47日期:2022-08-18 15:21:59

提到ArrayBlockingQueue的方法,想必大家都不陌生,我們在入隊和出隊的時候,接觸了不少這方面的函數。當然ArrayBlockingQueue中的方法也不止于此,今天我們就全部為大家羅列出來,也算是做一個學習方向上的指引。然后就其中的peek方法帶來實例介紹,并說明ArrayBlockingQueue使用的不足之處。

1.ArrayBlockingQueue函數列表

// 創建一個帶有給定的(固定)容量和默認訪問策略的 ArrayBlockingQueue。ArrayBlockingQueue(int capacity)// 創建一個具有給定的(固定)容量和指定訪問策略的 ArrayBlockingQueue。ArrayBlockingQueue(int capacity, boolean fair)// 創建一個具有給定的(固定)容量和指定訪問策略的 ArrayBlockingQueue,它最初包含給定 collection 的元素,并以 collection 迭代器的遍歷順序添加元素。ArrayBlockingQueue(int capacity, boolean fair, Collection<? extends E> c)// 將指定的元素插入到此隊列的尾部(如果立即可行且不會超過該隊列的容量),在成功時返回 true,如果此隊列已滿,則拋出 IllegalStateException。boolean add(E e)// 自動移除此隊列中的所有元素。void clear()// 如果此隊列包含指定的元素,則返回 true。boolean contains(Object o)// 移除此隊列中所有可用的元素,并將它們添加到給定 collection 中。int drainTo(Collection<? super E> c)// 最多從此隊列中移除給定數量的可用元素,并將這些元素添加到給定 collection 中。int drainTo(Collection<? super E> c, int maxElements)// 返回在此隊列中的元素上按適當順序進行迭代的迭代器。Iterator<E> iterator()// 將指定的元素插入到此隊列的尾部(如果立即可行且不會超過該隊列的容量),在成功時返回 true,如果此隊列已滿,則返回 false。boolean offer(E e)// 將指定的元素插入此隊列的尾部,如果該隊列已滿,則在到達指定的等待時間之前等待可用的空間。boolean offer(E e, long timeout, TimeUnit unit)// 獲取但不移除此隊列的頭;如果此隊列為空,則返回 null。E peek()// 獲取并移除此隊列的頭,如果此隊列為空,則返回 null。E poll()// 獲取并移除此隊列的頭部,在指定的等待時間前等待可用的元素(如果有必要)。E poll(long timeout, TimeUnit unit)// 將指定的元素插入此隊列的尾部,如果該隊列已滿,則等待可用的空間。void put(E e)// 返回在無阻塞的理想情況下(不存在內存或資源約束)此隊列能接受的其他元素數量。int remainingCapacity()// 從此隊列中移除指定元素的單個實例(如果存在)。boolean remove(Object o)// 返回此隊列中元素的數量。int size()// 獲取并移除此隊列的頭部,在元素變得可用之前一直等待(如果有必要)。E take()// 返回一個按適當順序包含此隊列中所有元素的數組。Object[] toArray()// 返回一個按適當順序包含此隊列中所有元素的數組;返回數組的運行時類型是指定數組的運行時類型。<T> T[] toArray(T[] a)// 返回此 collection 的字符串表示形式。String toString()2.peek方法實例

讀取隊列中隊首的元素,不會刪除該元素。

//獲取元素,元素不出隊public E peek() { //上鎖 final ReentrantLock lock = this.lock; lock.lock(); try { //調用itemAt方法獲取元素 return itemAt(takeIndex); // null when queue is empty } finally { //釋放鎖資源 lock.unlock(); } }3.ArrayBlockingQueue缺點

(1)隊列長度固定且必須在初始化時指定,所以使用之前一定要慎重考慮好容量;

(2)如果消費速度跟不上入隊速度,則會導致提供者線程一直阻塞,且越阻塞越多,非常危險;

(3)只使用了一個鎖來控制入隊出隊,效率較低

ArrayBlockingQueue用法擴展:

1、ArrayBlockingQueue(int)

接收一個整型的參數,這個整型參數指的是隊列的長度,其定義如下,

public ArrayBlockingQueue(int capacity) { this(capacity, false); }

可以看到這個方法調用的是ArrayBlockingQueue(int,boolean)方法,那么看下這個方法,

2、ArrayBlockingQueue(int,boolean)

接收兩個參數,一個整型,一個boolean類型,前邊已經知道整型參數是隊列的長度,那么boolean類型參數代表什么意思那,其定義如下,

public ArrayBlockingQueue(int capacity, boolean fair) { if (capacity <= 0) throw new IllegalArgumentException(); this.items = new Object[capacity]; lock = new ReentrantLock(fair); notEmpty = lock.newCondition(); notFull = lock.newCondition(); }

可以看到在這個構造方法中進行了相關邏輯實現,對items進行了數組初始化,boolean類型的參數是作為可重入鎖的參數進行初始化,規定可重入鎖是公平還是不公平,默認為false,另外初始化了notEmpty、notFull兩個信號量。

到此這篇關于java ArrayBlockingQueue的方法及缺點分析的文章就介紹到這了,更多相關java ArrayBlockingQueue的方法及不足點內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 深圳市宏康仪器科技有限公司-模拟高空低压试验箱-高温防爆试验箱-温控短路试验箱【官网】 | 贵州科比特-防雷公司厂家提供贵州防雷工程,防雷检测,防雷接地,防雷设备价格,防雷产品报价服务-贵州防雷检测公司 | 天津电机维修|水泵维修-天津晟佳机电设备有限公司 | 轴流风机-鼓风机-离心风机-散热风扇-罩极电机,生产厂家-首肯电子 | 首页|专注深圳注册公司,代理记账报税,注册商标代理,工商变更,企业400电话等企业一站式服务-慧用心 | HYDAC过滤器,HYDAC滤芯,现货ATOS油泵,ATOS比例阀-东莞市广联自动化科技有限公司 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 液压升降货梯_导轨式升降货梯厂家_升降货梯厂家-河南东圣升降设备有限公司 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 生产自动包装秤_颗粒包装秤_肥料包装秤等包装机械-郑州鑫晟重工科技有限公司 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 武汉印刷厂-不干胶标签印刷厂-武汉不干胶印刷-武汉标签印刷厂-武汉标签制作 - 善进特种标签印刷厂 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 定量包装机,颗粒定量包装机,粉剂定量包装机,背封颗粒包装机,定量灌装机-上海铸衡电子科技有限公司 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 色谱柱-淋洗液罐-巴罗克试剂槽-巴氏吸管-5ml样品瓶-SBS液氮冻存管-上海希言科学仪器有限公司 | 合肥白癜风医院_合肥治疗白癜风医院_合肥看白癜风医院哪家好_合肥华研白癜风医院 | BHK汞灯-百科|上海熙浩实业有限公司 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | RTO换向阀_VOC高温阀门_加热炉切断阀_双偏心软密封蝶阀_煤气蝶阀_提升阀-湖北霍科德阀门有限公司 | 鹤壁创新仪器公司-全自动量热仪,定硫仪,煤炭测硫仪,灰熔点测定仪,快速自动测氢仪,工业分析仪,煤质化验仪器 | 液压油缸-液压站生产厂家-洛阳泰诺液压科技有限公司 | 振动传感器,检波器-威海广达勘探仪器有限公司 | 成都茶楼装修公司 - 会所设计/KTV装修 - 成都朗煜装饰公司 | 成都顶呱呱信息技术有限公司-贷款_个人贷款_银行贷款在线申请 - 成都贷款公司 | 展厅设计公司,展厅公司,展厅设计,展厅施工,展厅装修,企业展厅,展馆设计公司-深圳广州展厅设计公司 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 铝合金电阻-无源谐波滤波器-上海稳达电讯设备厂 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 西门子伺服电机维修,西门子电源模块维修,西门子驱动模块维修-上海渠利 | 数控车床-立式加工中心-多功能机床-小型车床-山东临沂金星机床有限公司 | 加盟店-品牌招商加盟-创业项目商机平台 | 中控室大屏幕-上海亿基自动化控制系统工程有限公司 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 联系我们老街华纳娱乐公司官网19989979996(客服) | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 聚合氯化铝价格_聚合氯化铝厂家_pac絮凝剂-唐达净水官网 | 广东佛电电器有限公司|防雷开关|故障电弧断路器|智能量测断路器 广东西屋电气有限公司-广东西屋电气有限公司 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 |