zoukankan      html  css  js  c++  java
  • 线程池(4)Executors.newScheduledThreadPool-只执行1次

    例子1:延迟3秒后,只执行1次

    ScheduledExecutorService es = Executors.newScheduledThreadPool(5);
            log.info("开始时间");
            try {
                for (int i = 0; i < 20; i++) {
                    Runnable syncRunnable = new Runnable() {
                        @Override
                        public void run() {
                            log.info(Thread.currentThread().getName());
                        }
                    };
                    es.schedule(syncRunnable, 3000, TimeUnit.MILLISECONDS);
                }
            } finally {
                es.shutdown();
            }

    运行结果:

                10:41:39.589 开始时间
                10:41:42.595 pool-1-thread-1
                10:41:42.595 pool-1-thread-2
                10:41:42.595 pool-1-thread-3
                10:41:42.595 pool-1-thread-4
                10:41:42.596 pool-1-thread-2
                10:41:42.596 pool-1-thread-5
                10:41:42.596 pool-1-thread-1
                10:41:42.596 pool-1-thread-3
                10:41:42.597 pool-1-thread-4
                10:41:42.597 pool-1-thread-2
                10:41:42.597 pool-1-thread-5
                10:41:42.597 pool-1-thread-1
                10:41:42.598 pool-1-thread-3
                10:41:42.598 pool-1-thread-4
                10:41:42.598 pool-1-thread-2
                10:41:42.599 pool-1-thread-5
                10:41:42.599 pool-1-thread-1
                10:41:42.600 pool-1-thread-3
                10:41:42.600 pool-1-thread-4
                10:41:42.600 pool-1-thread-2

    调用的ThreadPoolExecutor:

    public ScheduledThreadPoolExecutor(int corePoolSize) {
            super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,
                  new DelayedWorkQueue());
        }

    corePoolSize=5,maximumPoolSize=Integer.MAX_VALUE

    keepAliveTime=0纳秒

    allowCoreThreadTimeout=false(默认)

    采用延迟队列DelayedWorkQueue

    因此,

    • 线程池中的线程数永远是5,永久存活
    • 对于新任务,当队列未满时,插入队列;当队列已满时,默认执行AbortPolicy,即抛出异常。
    • 支持线程reuse

    因此,类似newFixedThreadPool

     

    public ScheduledThreadPoolExecutor(int corePoolSize) {        super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS,              new DelayedWorkQueue());    }

  • 相关阅读:
    关于jsp
    NASA: A Closer View of the Moon(近距离观察月球)
    NASA: Seeing Jupiter(注视木星)
    NASA: SpaceX的猎鹰9号火箭将龙飞船发射到国际空间站
    导航狗IT周报第十五期(July 8, 2018)
    导航狗IT周报-2018年05月27日
    导航狗IT周报-2018年05月18日
    小苹果WP(实验吧-隐写术)
    Python实现猜数字游戏1.0版
    代码方式设置WordPress内所有URL链接都在新标签页打开
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/9606546.html
Copyright © 2011-2022 走看看