zoukankan      html  css  js  c++  java
  • ScheduledThreadExecutor定时任务线程池

      ScheduledThreadPoolExecutor 继承自ThreadPoolExecutor实现了ScheduledExecutorService接口。主要完成定时或者周期的执行线程任务。

      代码如下:

    package com.itszt.test3;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.concurrent.Executors;
    import java.util.concurrent.ScheduledExecutorService;
    import java.util.concurrent.TimeUnit;
    /**
     * ScheduledThreadExecutor,定时任务线程池
     */
    public class Test3 {
        public static void main(String[] args) {
            ScheduledExecutorService pool = Executors.newScheduledThreadPool(10);
            System.out.println("main开始时间:"+MyRunnable.now());
            for(int i=0;i<3;i++){
                MyRunnable myRunnable = new MyRunnable("thread-" + i);
                System.out.println(myRunnable.getName()+"开始时间:"+MyRunnable.now());
                pool.schedule(myRunnable,5, TimeUnit.SECONDS);//延时5秒执行
                //在一次调用完成和下一次调用开始之间有长度为delay的延迟
                //pool.scheduleWithFixedDelay(myRunnable,5,5,TimeUnit.SECONDS);
            }
            try {
                Thread.sleep(7000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            pool.shutdown();//7秒后不再接受执行线程
            while (!pool.isTerminated()){
                //等待所有线程结束
            }
            System.out.println("main结束时间:"+MyRunnable.now());
        }
    }
    class MyRunnable implements Runnable{
        private String name;
    
        public MyRunnable(String name) {
            this.name = name;
        }
    
        public String getName() {
            return name;
        }
    
        @Override
        public void run() {
            System.out.println(getName()+"true start:"+now());
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(getName()+"true end:"+now());
        }
        static String now(){
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return format.format(new Date());
        }
    }
    

      代码执行结果如下:

    main开始时间:2018-03-24 21:08:06
    thread-0开始时间:2018-03-24 21:08:06
    thread-1开始时间:2018-03-24 21:08:06
    thread-2开始时间:2018-03-24 21:08:06
    thread-1true start:2018-03-24 21:08:11
    thread-2true start:2018-03-24 21:08:11
    thread-0true start:2018-03-24 21:08:11
    thread-2true end:2018-03-24 21:08:14
    thread-0true end:2018-03-24 21:08:14
    thread-1true end:2018-03-24 21:08:14
    main结束时间:2018-03-24 21:08:14  
  • 相关阅读:
    测试工具文件4. 数据分析——定义analyseXML
    关于sprintf的"_CRT_SECURE_NO_WWARNINGS"问题的解决
    测试工具文件3. 输出文件——定义TestLog
    测试工具文件2. 支持代码——定义TestUtility
    测试工具文件1. 平台问题——定义Platform.h
    python之正则表达式
    python之字典总结
    python之global关键字的用法
    python + selenium 常用方法验证页面上的UI元素
    python + selenium 元素定位方法 (索引)By属性
  • 原文地址:https://www.cnblogs.com/lizhangyong/p/8641480.html
Copyright © 2011-2022 走看看