1. 程式人生 > >執行緒池的幾種常見的建立的方式

執行緒池的幾種常見的建立的方式

一:建立大小不固定的執行緒池

二:建立固定數量執行緒的執行緒池

三:建立單執行緒的執行緒池

四:建立定時執行緒

1.建立大小不固定的執行緒池


package com.peace.pms.Test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
 * @Author: cxx
 * @Date: 2018/3/3 17:16
 */
public class ThreadPoolDemo {
    public static class Taskdemo implements Runnable{
        @Override
        public void run() {
            for(int i=0;i<10;i++){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
    }
    public static void main(String[] args) {
       ExecutorService es=Executors.newFixedThreadPool(2);
        for(int i=0;i<10;i++){
            Taskdemo tc=new Taskdemo();
            es.execute(tc);
        }
        es.shutdown();
    }
}

2.建立固定數量執行緒的執行緒池


public static void main(String[] args) {
        ExecutorService es=Executors.newFixedThreadPool(2);
        for(int i=0;i<10;i++){
            Taskdemo tc=new Taskdemo();
            es.execute(tc);
        }
        es.shutdown();
    }

3.建立單執行緒的執行緒池


public static void main(String[] args) {
        ExecutorService es=Executors.newSingleThreadExecutor();
        for(int i=0;i<10;i++){
            Taskdemo tc=new Taskdemo();
            es.execute(tc);
        }
        es.shutdown();
    }

4.建立定時執行緒

 public static void main(String[] args) {
        ScheduledExecutorService es=Executors.newScheduledThreadPool(2);
        for(int i=0;i<10;i++){
            Taskdemo tc=new Taskdemo();
            //引數1:目標物件
            //引數2:隔多長時間開始執行執行緒,
            //引數3:執行週期
            //引數4:時間單位
            es.scheduleAtFixedRate(tc, 30, 10, TimeUnit.MILLISECONDS);
        }
        es.shutdown();
    }