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

匆匆过客 提交于 2019-12-02 18:00:31
一:创建大小不固定的线程池
二:创建固定数量线程的线程池
三:创建单线程的线程池
四:创建定时线程

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.newCachedThreadPool(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();
    }

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!