使用LinkedList實現安全佇列

2021-09-22 22:14:59 字數 930 閱讀 7338

使用 wait notify 實現乙個佇列,佇列有2個方法,add 和 get 。add方法往佇列中新增元素,get方法往佇列中獲得元素。佇列必須是執行緒安全的。如果get執行時,隊列為空,執行緒必須阻塞等待,直到有佇列有資料。如果add時,佇列已經滿,則add執行緒要等待,直到佇列有空閒空間。 

/**

* 使用linkedlist實現安全佇列

* */

public class safelinkedlist

/*** 當佇列已滿時候,阻塞,直到取走資料為止

* @param e

*/public void add(e e) catch (interruptedexception e1)

}data.add(e);

data.notifyall();}}

/*** 當隊列為空時候,阻塞等待

* @return

*/public e get() catch (interruptedexception e)

}e e = data.getfirst();//獲取佇列頭元素

data.removefirst();//移除對頭元素

data.notifyall();

return e;}}

public synchronized int size()

}

測試佇列:

/**

* 多執行緒條件下測試linkedlist訪問資料是否安全

*/public class safelinkedlisttest

class operaddthread implements runnable }}

class opergetthread implements runnable }}

}

手工實現LinkedList

參照其底層 按照自己的理解實現了linkedlist的一些基本功能。如果對c和c 指標了解一下,理解起來非常快。package cn.liu.mylinkedlist 結點 public class node 構造器,來傳資料 public node object element package c...

手工實現linkedList

鍊錶結構就像一根鏈條一樣,環環相扣。每一環 node entry 都由next previous,element 存放資料的地方 第乙個的next 是第二個,第二個的next是第三個,直到最後乙個的next 可以為null 最後第乙個的previous 是最後第二個,最後第二個的previous是最...

類實現之LinkedList

include class node node int num num num node class linkedlist linkedlist void add int num node pnew new node num pnew pre pcur pcur next pnew void add...