1. 程式人生 > >JAVA 常用執行緒池

JAVA 常用執行緒池

JAVA 固定執行緒池 FixedThreadPool


執行緒池介紹

Java通過Executors提供四種執行緒池:
newCachedThreadPool
建立一個可快取執行緒池,如果執行緒池長度超過處理需要,可靈活回收空閒執行緒,若無可回收,則新建執行緒。
newFixedThreadPool
建立一個定長執行緒池,可控制執行緒最大併發數,超出的執行緒會在佇列中等待。
newScheduledThreadPool
建立一個定長執行緒池,支援定時及週期性任務執行。
newSingleThreadExecutor
建立一個單執行緒化的執行緒池,它只會用唯一的工作執行緒來執行任務,保證所有任務按照指定順序(FIFO, LIFO, 優先順序)執行。


我個人喜歡並且常用是 FixedThreadPool

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * Created by liang on 2017/7/7.
 */
public class ThreadTest {

    /**
     * main 方法
     * @param args
     */
    public static void main(String args[]){
        ThreadTest threadTest = new
ThreadTest(); threadTest.exeThread();//呼叫執行 } public void exeThread(){ //建立 固定的執行緒池,執行緒池的默認個數為 3 個執行緒 ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); //往執行緒池內 添裝 10個待執行執行緒 for(int i=0;i<10;i++){ fixedThreadPool.execute(new
ThreadK(i)); } } /** * 建立一個 需要執行執行緒類 */ public class ThreadK implements Runnable{ int count ; public ThreadK(int i) { count = i; } /** * 執行緒需要處理的作業 */ public void run() { for (int index = 0; index < 2; index++){ try { System.out.println(Thread.currentThread().getName()+"--"+count+"--"+index); if("pool-1-thread-1".equals(Thread.currentThread().getName())){ //設定 一個異常 1%0 丟擲異常,檢查是否阻礙其他的執行緒執行 int k = 1%0; Thread.sleep(2000); } } catch (Exception e) { e.printStackTrace(); } } } } }