多线程五---------线程池 Executor 管理线程


1. Executor 管理线程

  Executor 框架提供了各种类型的线程池。主要有以下工厂方法:

     ExecutorService d  = Executors.newFixedThreadPool(9);
        Executors.newSingleThreadExecutor();
        Executors.newCachedThreadPool();
        Executors.newSingleThreadScheduledExecutor();
        Executors.newScheduledThreadPool(5);

newFixedThreadPool

        /*
         * 该方法返回一个固定数量的线程池,该线程池中的线程数始终不变,当提交一个任务时,线程池中有空闲线程,立即执行,当线程池中没有空闲线程被暂存在一个队列,有空闲线程时继续执行。FixedThreadPool 一次性预先执行代价高昂的线程分配,因此可以限制线程的数量。节约时间。
         */
        /*ExecutorService exe2 = Executors.newFixedThreadPool(5);
        exe2.execute(new ExtendsThreadBase("A"));
        exe2.execute(new ExtendsThreadBase("B"));
        exe2.execute(new ExtendsThreadBase("C"));
        exe2.execute(new ExtendsThreadBase("D"));
        exe2.shutdown();
        */





  CachedThreadPool

 /*

* 该方法返回一个根据任务实际情况调整线程数量的线程, 当提交一个任务时,线程池中有空闲线程,立即执行,如果没有空闲线程,则重新创建一个线程执行。

    /*ExecutorService exe = Executors.newCachedThreadPool();
        exe.execute(new ExtendsThreadBase("A"));
        exe.execute(new ExtendsThreadBase("B"));*/
        /*
         * 对exe.shutdown() 的调用可以防止新任务被提交到这个executor,
         * 当前线程将继续运行在exe.shutdown()被调用之前提交的所有任务。
         * 这个程序将在Executor中所有任务完成之后尽快退出。
         */
    /*    exe.shutdown();
        System.out.println("main thread is over");*/
       


SingleThreadExecutor

        /*该方法返回只有一个线程的线程池
         * SingleThreadExecutor就像线程数量为一的FixedThreadPool。
         * 如果向SingleThreadExecutor提交了多个任务,那么这些任务将排队。
         * 每个任务都会在下一个任务开始之前结束。
         * 如下面。A执行完之后再执行B,依次排队执行
         */
        ExecutorService exe3 = Executors.newSingleThreadExecutor();
        exe3.execute(new ExtendsThreadBase("A"));
        exe3.execute(new ExtendsThreadBase("B"));
        exe3.execute(new ExtendsThreadBase("C"));
        exe3.execute(new ExtendsThreadBase("D"));
        exe3.shutdown();


newSingleThreadScheduledExecutor

 /*

  *返回scheduleExecutorServices对象,线程池大小为1,scheduleExecutorServices接口在ExecutorServices接口上扩展了在给定时间执行某个任务的功能,如在某个固定的延时之后执行,或者周期性执行某个任务。

*/


newScheduledThreadPool

/*

*改方法返回scheduleExecutorServices对象,但是可以指定线程池数量。

*/

  */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值