定时器

复制代码
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 @   WXY_WXY  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示