1. 線程簡介 程式:程式時指令和數據的有序集合,其本身沒有任何運行的含義,是一個靜態的概念 進程:執行程式的一次執行過程,或是正在運行的一個程式,是一個動態的過程。由它自身的產生、存在和消亡的過程 線程是由進程創建的,是進程的一個實體。通常在一個進程中可以包含若幹個線程,當然一個進程中至少有一個線 ...
轉自:
http://www.java265.com/JavaJingYan/202207/16570868423908.html
下文筆者講述創建線程池的方法分享,如下所示
java原生提供創建線程池的方式如下
newSingleThreadExecutor(): 它的特點在於工作線程數目被限製為1 操作一個無界的工作隊列 所以它保證了所有任務的都是被順序執行 最多會有一個任務處於活動狀態 且不允許使用者改動線程池實例 因此可以避免其改變線程數目; newCachedThreadPool(): 它是一種用來處理大量短時間工作任務的線程池 具有幾個鮮明特點: 它會試圖緩存線程並重用 當無緩存線程可用時 就會創建新的工作線程 如果線程閑置的時間超過60秒 則被終止並移出緩存 長時間閑置時,這種線程池,不會消耗什麼資源 其內部使用SynchronousQueue作為工作隊列 newFixedThreadPool(int nThreads): 重用指定數目(nThreads)的線程 其背後使用的是無界的工作隊列 任何時候最多有nThreads個工作線程是活動的 這意味著,如果任務數量超過了活動隊列數目 將在工作隊列中等待空閑線程出現 如果有工作線程退出 將會有新的工作線程被創建 以補足指定的數目nThreads newSingleThreadScheduledExecutor(): 創建單線程池,返回 ScheduledExecutorService,可以進行定時或周期性的工作調度; newScheduledThreadPool(int corePoolSize): 和newSingleThreadScheduledExecutor()類似 創建的是個 ScheduledExecutorService 可以進行定時或周期性的工作調度 區別在於單一工作線程還是多個工作線程; newWorkStealingPool(int parallelism): 這是一個經常被人忽略的線程池 Java 8 才加入這個創建方法 其內部會構建ForkJoinPool 利用Work-Stealing演算法 並行地處理任務 不保證處理順序 ThreadPoolExecutor(): 是最原始的線程池創建 上面1-3創建方式都是對ThreadPoolExecutor的封裝