创建线程池有哪几种方式?

如题所述

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

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

    三:创建单线程的线程池  

    四:创建定时线程  

    1.创建大小不固定的线程池

    [java] view plain copy

    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.创建固定数量线程的线程池

    [java] view plain copy

    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.创建单线程的线程池

    [java] view plain copy

    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.创建定时线程

    [java] view plain copy

    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();  

    }  

温馨提示:答案为网友推荐,仅供参考
相似回答