線程五個狀態(tài)(生命周期):

萬碼學堂,電腦培訓,計算機培訓,Java培訓,JavaEE開發(fā)培訓,青島軟件培訓,軟件工程師培訓

線程運行時間

    假設一個服務器完成一項任務所需時間為:T1 創(chuàng)建線程時間,T2 在線程中執(zhí)行任務的時間,T3 銷毀線程時間。

       如果:T1 + T3 遠大于 T2,則可以采用線程池,以提高服務器性能。

線程池技術

  一個線程池包括以下四個基本組成部分

       1、線程池管理器(ThreadPool):用于創(chuàng)建并管理線程池,包括 創(chuàng)建線程池,銷毀線程池,添加新任務;

 

                2、工作線程(PoolWorker):線程池中線程,在沒有任務時處于等待狀態(tài),可以循環(huán)的執(zhí)行任務;

                3、任務接口(Task):每個任務必須實現(xiàn)的接口,以供工作線程調度任務的執(zhí)行,它主要規(guī)定了任務的入口,任務執(zhí)行完后的收尾工作,任務的執(zhí)行狀態(tài)等;

                4、任務隊列(taskQueue):用于存放沒有處理的任務。提供一種緩沖機制。

   線程池技術正是關注如何縮短或調整T1,T3時間的技術,從而提高服務器程序性能的。它把T1,T3分別安排在服務器程序的啟動和結束的時間段或者一些空閑的時間段,這樣在服務器程序處理客戶請求時,不會有T1,T3的開銷了。
  線程池不僅調整T1,T3產生的時間段,而且它還顯著減少了創(chuàng)建線程的數(shù)目,看一個例子:
  假設一個服務器一天要處理50000個請求,并且每個請求需要一個單獨的線程完成。在線程池中,線程數(shù)一般是固定的,所以產生線程總數(shù)不會超過線程池中線程的數(shù)目,而如果服務器不利用線程池來處理這些請求則線程總數(shù)為50000。一般線程池大小是遠小于50000。所以利用線程池的服務器程序不會為了創(chuàng)建50000而在處理請求時浪費時間,從而提高效率。

 

java并發(fā)編程:線程池的使用

    我們使用線程的時候就去創(chuàng)建一個線程,這樣實現(xiàn)起來非常簡便,但是就會有一個問題:

  如果并發(fā)的線程數(shù)量很多,并且每個線程都是執(zhí)行一個時間很短的任務就結束了,這樣頻繁創(chuàng)建線程就會大大降低系統(tǒng)的效率,因為頻繁創(chuàng)

網(wǎng)友評論