天天看點

黑馬程式員_java并發Executors

----------android教育訓練、java教育訓練、期待與您交流! ----------

并發就是一個時間段内有幾個程式同時執行!那麼java程式實作的并發我們經常使用多線程來表述!在java中要想實作多線程,有兩種手段,一種是繼續Thread類,另外一種是實作Runable接口。若是我們寫的項目需要的線程少的話,這樣寫是完全可以的!那麼要是需要很多很多大量的線程的話,我們在使用這樣的方法就過于死闆與複雜了!那麼怎麼辦呢?當然我們考慮到的sun公司也考慮到了,在java5.0以後,sun公司對java線程的類庫做了大量的擴充,其中線程池就是java5的新特征之一,并且還有很多與多線程程式設計相關的内容!——Executors

線程池的思想是一種對象池的思想,開放一塊記憶體空間,裡面存放了衆多(未死亡)的線程,池中線程執行排程由池管理器來處理。當有線程任務時,從池中取一個,執行完畢,對象歸還給池。這樣可以避免反複建立線程對象所帶來的性能開銷,節省了系統的資源。

Executors類的幾個靜态方法簡單介紹:

newCachedThreadPool 調用 execute 将重用以前構造的線程(如果線程可用)。如果現有線程沒有可用的,則建立一個新線程并添加到池中。每個Thread若是60秒沒使用則移除

newFixedThreadPool 固定數量的Thread

newSingleThreadExecutor 隻有一個Thread,循序的執行指定給它的每個任務

newScheduledThreadPool 建立一個線程池,它可安排在給定延遲後運作指令或者定期地執行

newSingleThreadScheduledExecutor 建立一個單線程執行程式,它可安排在給定延遲後運作指令或者定期地執行