Java執行緒池應用

2021-06-07 22:16:33 字數 1124 閱讀 4409

1.背景

諸如web 伺服器、資料庫伺服器、檔案伺服器或郵件伺服器之類的許多伺服器應用程式都面向處理來自某些遠端**的大量短小的任務。 伺服器應用程式中經常出現的情況是:單個任務處理的時間很短而請求的數目卻是巨大的。

2.解決方法

構建伺服器應用程式的乙個過於簡單的模型應該是:每當乙個請求到達就建立乙個新執行緒,然後在新執行緒中為請求服務。

那麼這種方法的嚴重不足就很明顯。每個請求對應乙個執行緒(thread-per-request)方法的不足之一是:為每個請求建立乙個新執行緒的開銷很大;在乙個 jvm 裡建立太多的執行緒可能會導致系統由於過度消耗記憶體而用完記憶體或「切換過度」。為了防止資源不足,伺服器應用程式需要一些辦法來限制任何給定時刻處理的請求數目。

我們可以實現乙個執行緒池類,其中客戶機類等待乙個可用執行緒、將任務傳遞給該執行緒以便執行、然後在任務完成時將執行緒歸還給池,一般乙個簡單執行緒池至少包含下列組成部分:

執行緒池管理器(threadpoolmanager):用於建立並管理執行緒池

工作執行緒(workthread): 執行緒池中線程

任務介面(task):每個任務必須實現的介面,以供工作執行緒排程任務的執行。

任務佇列:用於存放沒有處理的任務。提供一種緩衝機制。

publicclass workqueue

}public void execute(runnable r)

}private class poolworker extends thread catch(interruptedexception ignored)

}r = (runnable)queue.removefirst();

}// if we don't catchruntimeexception,

// the pool could leak threads

try catch (runtimeexception e) }}

}public static void main(string args) catch (exception e) {}

system.out.println("this is a thread");}}

});}

}

Java執行緒池

executors類詳解 此包中所定義的 executor executorservice scheduledexecutorservice threadfactory 和 callable 類的工廠和實用方法。此類支援以下各種方法 建立並返回設定有常用配置字串的 executorservice 的...

Java執行緒池

一 執行緒池 單執行緒 public static void runsinglethreadpool public static void runsinglethreadpoolwithfactory private static class mythreadfactory implements t...

java 執行緒池

1.執行緒池的作用 限制系統中執行執行緒的數量 2.為什麼要用執行緒池 2.1.減少了建立和銷毀執行緒的次數,每個工作執行緒都可以被重複利用,可執行多個任務.2.2 可以根據系統的承受能力,調整執行緒池中工作線執行緒的數目,防止因為消耗過多的記憶體,而把伺服器累趴下。3.執行緒池介面類 3.1 ex...