JDK5提供的阻塞佇列

2021-08-31 02:20:32 字數 944 閱讀 9020

jdk5的concurrent包裡面盡是寶貝,還好我有的是時間,正好可以一一八來。

以前用多執行緒處理 生產者-消費者 問題的時候,需要採用wait,notify, 現在有了這些阻塞佇列,就可以把這些wait,notify拋一邊,輕易的就能解決問題。

首先是synchronousqueue,這個佇列裡面只能放乙個物件,在沒有被take之前,所有的add都會被阻塞,反之,如果佇列裡面沒有物件,那麼所有的take也都會被阻塞。

下面**中的synchronousqueue,可以替換成arrayblockingqueue, 和linkedblockingqueue。

arrayblockingqueue是乙個定長的阻塞佇列,

linkedblockingqueue則是不定長度,可以指定,也可以不指定,不指定的話其最大值可以為integer.max_value

//public blockingqueuebq=new synchronousqueue();

//public blockingqueuebq=new arrayblockingqueue(5);

public blockingqueuebq=new linkedblockingqueue();

int i=0;

class producer implements runnable catch (interruptedexception e1)

i++;

try catch (interruptedexception e) }}

}class consumer implements runnable catch (interruptedexception e)

try catch (interruptedexception e) }}

}public void testblockingqueue()

jdk5的執行緒池

接上篇 url 繼續討論執行緒池 jdk5也提供了執行緒池 而且非常簡單 code executorservice pool executors.newfixedthreadpool 4 建立執行緒池 4個工作執行緒 pool.execute new runnabletask 向任務佇列新增任務,任...

JDK5新特性 列舉

一些程式在執行時,他需要的資料不能是任意的,而必須是一定範圍內的值,jdk5以前採用自定義類來解決,jdk5以後可以直接採用列舉解決。在jdk5之後,使用enum關鍵字定義一種新的型別,稱為列舉型別。enum類和enum關鍵字 使用enum關鍵字定義的列舉類,實際上就相當於定義了乙個類,此類繼承了e...

JDK5新增的鎖機制

jdk5開始新增了兩種鎖機制 reentrantreadwritelock和reentrantlock。對於reentrantreadwritelock鎖機制 1 重入方面其內部的writelock可以獲取readlock,但是反過來readlock想要獲得writelock則永遠都不要想。2 wr...