日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单队列的实现

發布時間:2025/6/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单队列的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

下面是自己通過linkedList實現的一個簡單隊列

public class MyQueue {//1、需要一個承載元素的集合privakte LinkedList<Object> list = new LinkedList<Object>();//2、需要一個計數器private AtomicInteger count = new AtomicInteger(0);//3、需要要制定上限和下限private final int minSize = 0;private final int maxSize;//4 構造方法public MyQueue(int size){this.maxSize = size;}//初始化一個對象用于加鎖private final Object lock = new Object();//put(anObject): 把anObject加到BlockingQueue里,如果BlockQueue沒有空間,則調用此方法的線程被阻斷,直到BlockingQueue里面有空間再繼續public void put(Object object){synchronized (lock){while (count.get()==this.maxSize){try {lock.wait();} catch (InterruptedException e) {e.printStackTrace();}}//1、加入元素list.add(object);//2、計數器累加count.incrementAndGet();//3、通知另一個線程(喚醒)lock.notify();System.out.println("新加入的元素為:"+object);}}//take: 取走BlockingQueue里排在首位的對象,若BlockingQueue為空,阻斷進入等待狀態直到BlockingQueue有新的數據被加入.public Object take(){Object ret = null;synchronized (lock){while (count.get()==this.minSize){try {lock.wait();} catch (InterruptedException e) {e.printStackTrace();}}ret = list.removeFirst();count.decrementAndGet();lock.notify();}return ret;}public int getSize(){return this.count.get();}public static void main(String[] args){final MyQueue mq = new MyQueue(5);mq.put("a");mq.put("b");mq.put("c");mq.put("d");mq.put("e");System.out.println("當前容器的長度:" + mq.getSize());Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {mq.put("f");mq.put("g");}},"t1");t1.start();Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {Object o1 = mq.take();System.out.println("移除的元素為:" + o1);Object o2 = mq.take();System.out.println("移除的元素為:" + o2);}},"t2");try {TimeUnit.SECONDS.sleep(2);} catch (InterruptedException e) {e.printStackTrace();}t2.start();} } 復制代碼

轉載于:https://juejin.im/post/5abd8da45188255caf064e4a

總結

以上是生活随笔為你收集整理的简单队列的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。