日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java多线程之线程池详解

發(fā)布時間:2024/2/28 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java多线程之线程池详解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Java多線程之線程池詳解


目錄:

  • 線程池使用及優(yōu)勢
  • 線程池3個常用方式
  • 線程池7大參數(shù)深入介紹
  • 線程池底層工作原理

  • 1. 線程池使用及優(yōu)勢


  • 線程池做的工作主要是控制運行的線程的數(shù)量,處理過程中將任務(wù)放入隊列,然后在線程創(chuàng)建后啟動這些任務(wù),
    如果線程數(shù)量超過了最大數(shù)量 超出數(shù)量的 線程排隊等候,等其它線程執(zhí)行完畢,再從隊列中取出任務(wù)來執(zhí)行。
  • 它的主要特點為:線程復(fù)用,控制最大并發(fā)數(shù),管理線程。
  • 優(yōu)點:

  • 降低資源消耗。通過重復(fù)利用己創(chuàng)建的線程降低線程創(chuàng)建和銷毀造成的消耗。
  • 提高響應(yīng)速度。當(dāng)任務(wù)到達時,任務(wù)可以不需要的等到線程創(chuàng)建就能立即執(zhí)行。
  • 提高線程的可管理性。線程是稀缺資源,如果無限制的創(chuàng)建,不僅會消耗系統(tǒng)資源,還會降低系統(tǒng)的穩(wěn)定性,使用線程池可以進
    行統(tǒng)一的分配,調(diào)優(yōu)和監(jiān)控

  • 2. 線程池3個常用方式


    Java中的線程池是通過Executor框架實現(xiàn)的,該框架中用到了Executor,Executors,
    ExecutorService,ThreadPoolExecutor這幾個類。
    線程池3個常用方式:

  • Executors.newFixedThreadPool(int) :執(zhí)行長期任務(wù),性能好很多
  • Executors.newSingleThreadExecutor() : 一個任務(wù)一個任務(wù)執(zhí)行的場景
  • Executors.newCachedThreadPooI() : 執(zhí)行很多個短期異步的小程序或者負(fù)載較輕的服務(wù)器。
  • 先看代碼,再根據(jù)源碼總結(jié)


    1. Executors.newFixedThreadPool(int)


  • Executors.newFixedThreadPool(int)概述
  • 代碼驗證
  • public class MyThreadPoolDemo {public static void main(String[] args) { // 1池5個處理線程ExecutorService threadPool = Executors.newFixedThreadPool(5);// 模擬10個用戶來辦理業(yè)務(wù),每個用戶就是一個來自外部的請求線程。try {for (int i = 1; i <= 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName()+"\t 辦理業(yè)務(wù)");});}} catch (Exception e) {e.printStackTrace();} finally {threadPool.shutdown();}} }
  • 執(zhí)行結(jié)果:

  • 2. Executors.newSingleThreadExecutor()


  • Executors.newSingleThreadExecutor()概述
  • 代碼驗證
  • public class MyThreadPoolDemo {public static void main(String[] args) {ExecutorService threadPool = Executors.newSingleThreadExecutor();try { // 模擬10個用戶來辦理業(yè)務(wù),每個用戶就是一個來自外部的請求線程。for (int i = 1; i <= 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName()+"\t 辦理業(yè)務(wù)");});}} catch (Exception e) {e.printStackTrace();} finally {threadPool.shutdown();}} }
  • 執(zhí)行結(jié)果:

  • 3. Executors.newCachedThreadPooI()


  • Executors.newCachedTIyeadPooI() 概述

  • 代碼驗證:

  • public class MyThreadPoolDemo {public static void main(String[] args) {ExecutorService threadPool = Executors.newCachedThreadPool();try { // 模擬10個用戶來辦理業(yè)務(wù),每個用戶就是一個來自外部的請求線程。for (int i = 1; i <= 10; i++) {threadPool.execute(() -> {System.out.println(Thread.currentThread().getName() + "\t 辦理業(yè)務(wù)");});}} catch (Exception e) {e.printStackTrace();} finally {threadPool.shutdown();}} }
  • 執(zhí)行結(jié)果:

  • 3. 線程池7大參數(shù)深入介紹


    篇幅限制,另開一篇詳細說明。
    Java多線程之線程池7大參數(shù)詳解


    4. 線程池底層工作原理

    篇幅限制,另開一篇詳細說明。
    Java多線程之線程池底層工作原理

    總結(jié)

    以上是生活随笔為你收集整理的Java多线程之线程池详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。