1. 程式人生 > >線程池的概述和使用學習筆記

線程池的概述和使用學習筆記

pre 應該 code call adp 關閉 產生 提高 single

A:線程池概述
程序啟動一個新線程成本是比較高的,因為它涉及到要與操作系統進行交互。而使用線程池可以很好的提高性能,尤其是當程序中要創建大量生存期很短的線程時,更應該考慮使用線程池。線程池裏的每一個線程代碼結束後,並不會死亡,而是再次回到線程池中成為空閑狀態,等待下一個對象來使用。在JDK5之前,我們必須手動實現自己的線程池,從JDK5開始,Java內置支持線程池

  • B:內置線程池的使用概述

    • JDK5新增了一個Executors工廠類來產生線程池,有如下幾個方法
      • public static ExecutorService newFixedThreadPool(int nThreads)
      • public static ExecutorService newSingleThreadExecutor()
      • 這些方法的返回值是ExecutorService對象,該對象表示一個線程池,可以執行Runnable對象或者Callable對象代表的線程。它提供了如下方法
      • Future<?> submit(Runnable task)
      • <T> Future<T> submit(Callable<T> task)
    • 使用步驟:
      • 創建線程池對象
      • 創建Runnable實例
      • 提交Runnable實例
      • 關閉線程池
    • C:案例演示

      • 提交的是Runnable
        
        /**
      • public static ExecutorService newFixedThreadPool(int nThreads)
      • public static ExecutorService newSingleThreadExecutor()
        */
        public static void main(String[] args) {
        ExecutorService pool = Executors.newFixedThreadPool(2);//創建線程池
        pool.submit(new MyRunnable()); //將線程放進池子裏並執行
        pool.submit(new MyRunnable());

      pool.shutdown(); //關閉線程池
      }

  • // public static ExecutorService newFixedThreadPool(int nThreads)
    ExecutorService pool = Executors.newFixedThreadPool(2);
    
    // 可以執行Runnable對象或者Callable對象代表的線程
    pool.submit(new MyRunnable());
    pool.submit(new MyRunnable());
    
    //結束線程池
    pool.shutdown();

線程池的概述和使用學習筆記