久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

java線程池獲取運行線程數并控制線程啟動速度的方法

來源:技術員聯盟┆發布時間:2017-09-22 00:27┆點擊:

  在java里, 我們可以使用Executors.newFixedThreadPool 來創建線程池, 然后就可以不停的創建新任務,并用線程池來執行了。

  在提交任務時,如果線程池已經被占滿,任務會進到一個隊列里等待執行。

  這種機制在一些特定情況下會有些問題。今天我就遇到一種情況:創建線程比線程執行的速度要快的多,而且單個線程占用的內存又多,所以很快內存就爆了。

  想了一個辦法,就是在提交任務之前,先檢查目前正在執行的線程數目,只有沒把線程池占滿的時候在去提交任務。

  代碼很簡單:

  int threadCount = ((ThreadPoolExecutor)executor).getActiveCount();

  // System.out.println("running : " + threadCount);

  while (threadCount == POOL_SIZE) {

  TimeUnit.MILLISECONDS.sleep(1);

  threadCount = ((ThreadPoolExecutor)executor).getActiveCount();

  // System.out.println("running : " + threadCount);

  }

  executor.execute