使用notiy和wait模擬阻塞佇列

2022-07-30 03:06:13 字數 1202 閱讀 6329

public

class

myqueue

//put方法,向佇列中假資料,如果佇列滿則阻塞直到有空閒的空間

public

void

put(object obj)

catch

(interruptedexception e)

}//2.如果有空間了,首先新增乙個元素

list.add(obj);

//3.當前的size加1

size.incrementandget();

system.out.println("存入元素"+obj);

//4.喚醒所有的take等待執行緒

lock.notify();}}

//take方法,從佇列中取資料,如果隊列為空,那麼阻塞直到有乙個可用元素為止

public

object take()

catch

(interruptedexception e)

}//2.如果佇列中有值了,取出值

ret =list.removefirst();

//3.佇列的長度減1

size.decrementandget();

//4.喚醒所有的put等待執行緒

lock.notify();

system.out.println("取出元素"+ret);

}return

ret;

}//得到當前的長度

public

intgetsize()

public

static

void main(string args) throws

interruptedexception

},"t1");

t1.start();

timeunit.seconds.sleep(5);

thread t2 = new thread(new

runnable()

},"t1");

t2.start();

}}

執行結果:

存入元素1

存入元素2

存入元素3

存入元素4

存入元素5

myqueue的長度是:

5取出元素1

取出元素2

存入元素6

存入元素7

layui的upload元件使用和上傳阻止

頁面上乙個按鈕,點選彈出上傳框,從按鈕的方法 開始寫 處理未選擇檔案阻止上傳 通過判斷選擇檔案的數量,顯示或隱藏上傳按鈕 在js中定義 1 function uploadfile 4243 44 45createupload 4647 48 4950 51var files 5253 functio...

執行緒的wait和notify使用,生產消費案例

多個執行緒可以相互競爭,也可以互相協作完成一件事情。object的相關方法 object相關方法 描述void wait 讓當前執行緒等待,如果沒有被喚醒,就一直等待 void wait long timeout 讓當前執行緒等待指定毫秒值,如果到了指定的毫秒值自動喚醒 void notify 喚醒...

使用Python和OpenSSL簡單模擬加密通訊

本文使用python和檔案系統模擬保密通訊的整個過程 本階段完成系統初始狀態模擬,直接看 import os,shutil from crypto.cipher import des3,xor defxorencode data,key mm xor.new key cc mm.encrypt da...