线程池的几种常见的创建的方式

2022-06-14 19:54:25 浏览数 (1)

一:创建大小不固定的线程池 二:创建固定数量线程的线程池 三:创建单线程的线程池 四:创建定时线程

一:创建大小不固定的线程池

代码语言:javascript复制
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.newCachedThreadPool(2);
        for(int i=0;i<10;i  ){
            Taskdemo tc=new Taskdemo();
            es.execute(tc);
        }
        es.shutdown();
    }
}

二:创建固定数量线程的线程池

代码语言:javascript复制
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();
    }

三:创建单线程的线程池

代码语言:javascript复制
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();
    }

四:创建定时线程

代码语言:javascript复制
 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();
    }

0 人点赞