Java多執行緒 queue

2021-08-20 04:17:10 字數 1436 閱讀 2939

佇列,從一端進從另一端出

我們用put和take方法可以模擬

put:像佇列中放元素,把object加到blockingqueue裡,如果blockingqueue沒有空間,則呼叫此方法的執行緒被阻斷

take:從佇列中取元素,取走blockingqueue裡排在首位的物件,如果blockingqueue為空,阻斷進入等待狀態,直到blockingqueue

當佇列已經滿了,put方法需要等待

當佇列中元素個數為0,take方法也需要等待

public

class myqueue

//5.初始化乙個物件,用於加鎖

private final object lock = new object();

//put(anobject):把object加到blockingqueue裡,如果blockingqueue沒有空間,則呼叫此方法的執行緒被阻斷,

//直到blockingqueue裡有空間再繼續

public

void

put(object obj)catch (interruptedexception e)

}//1.加入元素

list.add(obj);

//2.計數器累加

count.incrementandget();

//3.通知另外乙個執行緒(喚醒)

lock.notify();

system.out.println("新加的元素為:"+obj);}}

//take:取走blockingqueue裡排在首位的物件,如果blockingqueue為空,阻斷進入等待狀態,直到blockingqueue

//有新的資料被加入

public object take()catch (interruptedexception e)

}//1.移除第乙個元素

ret= list.removefirst();

//2.計數器減一

count.decrementandget();

//3.通知另外乙個執行緒(喚醒)

lock.notify();

}return ret;

}public

intgetsize()

public

static

void

main(string args)

},"t1");

t1.start();

thread t2 = new thread(new runnable()

},"t2");

trycatch (interruptedexception e)

t2.start();}}

結果:

多執行緒queue

一 class queue.queue maxsize 0 佇列 先進先出 import queue q queue.queue q.put first q.put second q.put third print q.get print q.get print q.get 結果 先進先出 firs...

多執行緒之執行緒queue

有三種不同的用法 class queue.queue maxsize 0 佇列 先進先出 按 ctrl c 複製 按 ctrl c 複製 class queue.lifoqueue maxsize 0 堆疊 last in fisrt out import queue q queue.lifoque...

python 多執行緒 queue

python的queue設計的是執行緒安全的,所以大傢伙放心用吧!python多執行緒的一種簡單的實現如下 usr bin env python coding utf 8 import threading import time deffun argv print in argv time.slee...