定时器

package com.erayt.mock.test.thread;

import com.erayt.fmut.infrastructure.util.thread.LongTimeTaskExecutor;
import com.erayt.fmut.infrastructure.util.thread.ThreadPoolExecutorBuilder;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

/**
 * 文件名: com.erayt.mock.test.thread-SchedualThread </br>
 * 文件简介: </br>
 *  执行定时任务(可动态修改定时任务间隔)
 * @author wxy </br>
 * @date 2024/8/29 15:39 </br>
 * Copyright (c) 2022 ERAYT. All Rights Reserved
 */
@Component
public class ScheduleThread implements Runnable, InitializingBean, DisposableBean {

    private LongTimeTaskExecutor pool;
    private static Boolean update = Boolean.TRUE;
    private static ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3);
    private static ScheduledFuture<?> scheduledFuture1 = null;

    private int time = 1;

    @Override
    public void run() {
        while (update){
            try {
                TimeUnit.SECONDS.sleep(1);
                scheduledFuture1 = scheduledExecutorService.scheduleAtFixedRate(
                        () -> System.out.println(time), 0, time, TimeUnit.SECONDS);
                update = Boolean.FALSE;
                System.out.println("触发更新");
                onChange();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

    @Override
    public void destroy() throws Exception {
        scheduledExecutorService.shutdown();
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        pool = ThreadPoolExecutorBuilder.createSingleLongTimeTaskPool("ScheduleThread");
        pool.init();
        pool.submit(this);
    }

    public void onChange(){
        scheduledFuture1.cancel(true);
        update = Boolean.TRUE;
        time = 10;
    }
}

 

posted @ 2024-08-30 14:41  WXY_WXY  阅读(12)  评论(0)    收藏  举报