Executors类执行多线程

JDK1.5中提供Executors工厂类来产生连接池,该工厂类中包含如下的几个静态工程方法来创建连接池:

1、public static ExecutorService newFixedThreadPool(int nThreads):创建一个可重用的、具有固定线程数的线程池。

2、public static ExecutorService newSingleThreadExecutor():创建一个只有单线程的线程池,它相当于newFixedThreadPool方法是传入的参数为1

3、public static ExecutorService newCachedThreadPool():创建一个具有缓存功能的线程池,系统根据需要创建线程,这些线程将会被缓存在线程池中。

4、public static ScheduledExecutorService newSingleThreadScheduledExecutor:创建只有一条线程的线程池,他可以在指定延迟后执行线程任务

5、public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize):创建具有指定线程数的线程池,它可以再指定延迟后执行线程任务,corePoolSize指池中所保存的线程数,即使线程是空闲的也被保存在线程池内。

import java.util.concurrent.*;

public class ExecutorTest {
    public static void main(String[] args) {
           ExecutorTest.executorFixThreadMethod();
        //ExecutorTest.executorSingleThreadMethod();
       // ExecutorTest.executorCachedThreadMethod();
    }

    public static void executorFixThreadMethod(){
        //创建一个可重用、具有固定线程数的线程池
        ExecutorService es=Executors.newFixedThreadPool(5);
        for(int i=0;i<9;i++){
            es.submit(new MyThread());
        }
        //关闭线程任务
        es.shutdown();
    }

    public static void executorSingleThreadMethod(){
        //创建只有一个单线程的线程池
        Executors.newSingleThreadExecutor().submit(new MyThread());
    }

    public static void executorCachedThreadMethod(){
        //创建具有缓存功能的线程池,大小根据需求创建,每次线程大小都不一样,但不会超过规定的任务数
        ExecutorService es=Executors.newCachedThreadPool();
        for(int i=0;i<10;i++){
            es.submit(new MyThread());
        }
    }

    public static void executorSingleScheduledMethod(){
        //在给定初始延迟后首次启用的定期操作
        Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(new MyThread(),0,1000,TimeUnit.MICROSECONDS);

    }

    public static void executorScheduledMethod(){
        //指定线程池大小
        ScheduledExecutorService ses=Executors.newScheduledThreadPool(5);
        for(int i=0;i<10;i++){
            ses.scheduleWithFixedDelay(new MyThread(),0,1000,TimeUnit.MICROSECONDS);
        }
    }



}

class MyThread extends Thread{
    @Override
    public void run(){
        System.out.println(Thread.currentThread().getName());
    }
}

参考文章:
http://jiajun.iteye.com/blog/453544

http://blog.youkuaiyun.com/tsyj810883979/article/details/8481621

http://blog.youkuaiyun.com/lonelyroamer/article/details/7993637

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值