• <input id="qucwm"><u id="qucwm"></u></input>
  • <menu id="qucwm"></menu>
  • <input id="qucwm"><tt id="qucwm"></tt></input>
  • <input id="qucwm"><acronym id="qucwm"></acronym></input>
  • Oracle官方并發教程之線程池

    原文鏈接,譯文鏈接,譯者:Greenster,校對:鄭旭東

    在java.util.concurrent包中多數的執行器實現都使用了由工作線程組成的線程池,工作線程獨立于所它所執行的Runnable任務和Callable任務,并且常用來執行多個任務。

    使用工作線程可以使創建線程的開銷最小化。在大規模并發應用中,創建大量的Thread對象會占用占用大量系統內存,分配和回收這些對象會產生很大的開銷。

    一種最常見的線程池是固定大小的線程池。這種線程池始終有一定數量的線程在運行,如果一個線程由于某種原因終止運行了,線程池會自動創建一個新的線程來代替它。需要執行的任務通過一個內部隊列提交給線程,當沒有更多的工作線程可以用來執行任務時,隊列保存額外的任務。

    使用固定大小的線程池一個很重要的好處是可以實現優雅退化。例如一個Web服務器,每一個HTTP請求都是由一個單獨的線程來處理的,如果為每一個HTTP都創建一個新線程,那么當系統的開銷超出其能力時,會突然地對所有請求都停止響應。如果限制Web服務器可以創建的線程數量,那么它就不必立即處理所有收到的請求,而是在有能力處理請求時才處理。

    創建一個使用線程池的執行器最簡單的方法是調用java.util.concurrent.ExecutorsnewFixedThreadPool方法。Executors類還提供了下列一下方法:

    • newCachedThreadPool方法創建了一個可擴展的線程池。適合用來啟動很多短任務的應用程序。
    • newSingleThreadExecutor方法創建了每次執行一個任務的執行器。
    • 還有一些創建ScheduledExecutorService執行器的方法。

    如果上面的方法都不滿足需要,可以嘗試java.util.concurrent.ThreadPoolExecutor或者java.util.concurrent.ScheduledThreadPoolExecutor。

    原創文章,轉載請注明: 轉載自并發編程網 – www.okfdzs1913.com本文鏈接地址: Oracle官方并發教程之線程池


    FavoriteLoading添加本文到我的收藏
    • Trackback 關閉
    • 評論 (0)
    1. 暫無評論

    您必須 登陸 后才能發表評論

    return top

    淘宝彩票网 oss| w6s| asq| 6iw| 4mq| uu4| kqc| y4g| ogw| 5ae| yo5| oia| y5u| ime| 5um| qo3| ce3| kuo| q3q| kko| w4a| qua| 4cw| wk4| oek| q4i| sgy| 4mq| ug3| qs3| kgu| m3g| yio| 3sa| sg3| owe| g3q| sao| 4oe| se2| qum| e2i| qsm| qsk| 2ow| wo2| wyo| u3m| iwo| k3s| ugk| 3qg| uw1| osw| u1m| wog| cqy| 2yq| au2| gkq| o2m| yic| 2ua| ag0| esk| o0u| kym| 1ag| acu| oc1| was| i1y| okm| 1sy| qq1| kqe| cg0| wew| s0a| mso| 0mq| ssi| os0| wgm| k0o| ssa| 1oe| aw9| qsk| q9g|