java線程池

這裏寫圖片描述
java1.5之後追加了一個併發訪問的程序包: java.util.concurrent。對於此線程池操作的核心類和接口就定義在此包中。
這裏有2個核心的接口:
1、普通的執行線程池定義: java.util.concurrent.ExecutorService;
2、調度線程池:java.util.concurrent.ScheduledExecutorService;
一般可以使用 java.util.concurrent.Executors類完成線程池的創建
3、創建無大小限制的線程池: java.util.concurrent.ExecutorService newCachedThreadPool();
4、創建固定大小的線程池:java.util.concurrent.ExecutorService newFixedThreadPool(int nThreads);
5、創建單線程池:java.util.concurrent.ExecutorService newSingleThreadScheduledExecutor();
6、創建定時調度池:newScheduledThreadPool()

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.junit.Test;

public class testThreadPool {

    @Test
    public void test1() {
        //創建一個線程池的模型
        //ExecutorService executorService = Executors.newCachedThreadPool();  //創建無大小限制的線程池
        ExecutorService executorService = Executors.newFixedThreadPool(3);  //創建固定大小的線程池
        for(int x=0;x<10;x++){
            final int index=x;
            executorService.submit(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName()+", x="+index);
                }
            });
        }
        executorService.shutdown();
    }

    public static void main(String[] args) {
        ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);  //創建定時調度池
        for(int x=0;x<10;x++){
            final int index=x;
            executorService.scheduleAtFixedRate(new Runnable() {
                @Override
                public void run() {
                    System.out.println(Thread.currentThread().getName()+", x="+index);
                }
            }, 3, 2, TimeUnit.SECONDS);
        }
    }
}
發佈了325 篇原創文章 · 獲贊 143 · 訪問量 61萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章