91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中阻塞隊列的實現原理是什么

發布時間:2021-05-27 18:12:37 來源:億速云 閱讀:245 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關java中阻塞隊列的實現原理是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

阻塞隊列與普通隊列的不同在于。當隊列是空的時候,從隊列中獲取元素的操作將會被阻塞,或者當隊列滿時,往隊列里面添加元素將會被阻塞。試圖從空的阻塞隊列中獲取元素的線程將會被阻塞,直到其他的線程往空的隊列插入新的元素。同樣,試圖往已滿的阻塞隊列中添加新元素的線程同樣也會被阻塞,直到其他的線程使隊列重新變得空閑起來,如從隊列中移除一個或者多個元素,或者完全清空隊列,下圖展示了如何通過阻塞隊列來合作:

java中阻塞隊列的實現原理是什么

線程1往阻塞隊列中添加元素,而線程2從阻塞隊列中移除元素

從5.0開始,JDK在Java.util.concurrent包里提供了阻塞隊列的官方實現。盡管JDK中已經包含了阻塞隊列的官方實現。

阻塞隊列的實現

阻塞隊列的實現類似于帶上限的Semaphore的實現。

廢話不多說:

package com.huojg.test;
import java.util.LinkedList;
import java.util.List;
public class BlockingQueue { 
   private List queue = new LinkedList(); 
   private int limit = 10;    
   public BlockingQueue(int limit){ 
    this.limit = limit; 
   }      
   public synchronized void enqueue(Object item) 
   throws InterruptedException { 
    while(this.queue.size() == this.limit) { 
     wait(); 
    } 
    if(this.queue.size() == 0) { 
     notifyAll(); 
    } 
    this.queue.add(item); 
   }   
   public synchronized Object dequeue() 
   throws InterruptedException{ 
    while(this.queue.size() == 0){ 
     wait(); 
    } 
    if(this.queue.size() == this.limit){ 
     notifyAll(); 
    } 
    return this.queue.remove(0); 
   } 
  }

以上就是java中阻塞隊列的實現原理是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

靖宇县| 吉隆县| 建昌县| 施甸县| 太保市| 鲁甸县| 博白县| 东丰县| 大姚县| 上饶县| 土默特左旗| 彭州市| 长春市| 聊城市| 剑阁县| 昌吉市| 宁海县| 梅州市| 甘孜县| 五台县| 日照市| 武城县| 庐江县| 通许县| 淳安县| 东至县| 平谷区| 西青区| 称多县| 旬阳县| 金沙县| 凭祥市| 浦江县| 石家庄市| 大名县| 安泽县| 金昌市| 临沧市| 恩平市| 安图县| 美姑县|