1. 程式人生 > >多執行緒總結2

多執行緒總結2

Lock鎖,實現介面為ReentrantLock

方法有 lock()   unlock()

一般要加 ty....finally防止異常跳出

這三個是通過鎖物件進行呼叫的,因為涉及到鎖的釋放

並且wait後執行緒等待,鎖會立即釋放,等下次從這裡爬起來繼續進行下一步操作

notify用來喚醒當前鎖裡面還在等待的執行緒.

可以保證生產者消費者模式不出錯.

執行緒池

當程式中要建立大量生存期很短的執行緒時,更應該考慮使用執行緒池。

執行緒池裡的每一個執行緒程式碼結束後,並不會死亡,而是再次回到執行緒池中成為空閒狀態,等待下一個物件來使用。

JDK5開始,Java內建支援執行緒池

JDK5新增了一個Executors工廠類來產生執行緒池

es1.submit(new Runnable());

es1.shutdown.//關閉執行緒池.

使用執行緒池每次用完後執行緒回收,下次可以直接使用,不需要啟動執行緒.,提高了效率,

實現Callable介面,重寫call方法,結果和run方法差不多,只不過call有返回值型別,並且需要拋異常.,不過Callable依賴執行緒池存在.