jdk5的執行緒池

2021-08-29 08:45:31 字數 1087 閱讀 1965

接上篇 [url] 繼續討論執行緒池

jdk5也提供了執行緒池 而且非常簡單

[code]executorservice pool = executors.newfixedthreadpool(4); //建立執行緒池 4個工作執行緒

pool.execute(new runnabletask()); //向任務佇列新增任務,任務是乙個runnbale的實現類

pool.shutdown();//停止工作執行緒[/code]

看一下 這兩句

[code]pool.execute(new runnabletask()) //runnabletask implements runnable

//這句是在上篇文章中

pool.addtask(new ******task(new mymanager(), i)) //******task implements task [/code]

看出什麼不同了嗎? [color=blue]jdk5實現的是runnble介面 也就是說它的每個任務又是乙個執行緒?是這樣嗎? 不是[/color]

讓我們看看是怎麼實現的吧

[code]/**

* run a single task between before/after methods.

*/private void runtask(runnable task) catch(runtimeexception ex)

} finally

}[/code]

請注意task.run(); 這句, 這兒並沒有啟動執行緒 而是簡單的呼叫了乙個普通物件的乙個方法

runtask方法是在工作執行緒(worker)中呼叫的

[code]

/*** worker threads

*/private class worker implements runnable

} catch(interruptedexception ie) finally

}}[/code]

jdk5的開發人員也真夠省的,多建立乙個任務介面多好理解啊, 非要用runnable介面 誤導我們。

以上的**片段都節選自jdk5中threadpoolexecutor

JDK5新特性 列舉

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

JDK5提供的阻塞佇列

jdk5的concurrent包裡面盡是寶貝,還好我有的是時間,正好可以一一八來。以前用多執行緒處理 生產者 消費者 問題的時候,需要採用wait,notify,現在有了這些阻塞佇列,就可以把這些wait,notify拋一邊,輕易的就能解決問題。首先是synchronousqueue,這個佇列裡面只...

JDK5新增的鎖機制

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