定时器多线程执行

该代码示例展示了如何在Java中创建并使用ScheduledExecutorService进行定时任务调度,以及ThreadPoolExecutor来执行任务。文章通过一个名为Mytest的类,初始化了两个线程池,一个用于心跳检测,另一个用于处理任务。doOpen方法触发了多个定时任务,每个任务间隔5秒打印当前线程ID。
摘要由CSDN通过智能技术生成
package com.gwm.prophet.common.utils;


import javax.annotation.PostConstruct;
import java.util.Date;
import java.util.concurrent.*;


/**
 * @Author:langjf
 * @Date: 2023/2/16
 * @Desc
 */
public class Mytest {

    private static   ScheduledExecutorService heartBeatExecutor = Executors.newScheduledThreadPool(8);

    private static  ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(50, 100,
            5000, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<Runnable>(30),
            new ThreadPoolExecutor.CallerRunsPolicy());// 超过最大线程数,用主线程运行

    public static void main(String[] args) {
        doOpen();
    }

    private static void doOpen(){
        threadPoolExecutor.execute(new open(heartBeatExecutor));
        threadPoolExecutor.execute(new open(heartBeatExecutor));
        threadPoolExecutor.execute(new open(heartBeatExecutor));
        threadPoolExecutor.execute(new open(heartBeatExecutor));
        threadPoolExecutor.execute(new open(heartBeatExecutor));
    }

}

class open implements Runnable{
    private ScheduledExecutorService heartBeatExecutor;
    @Override
    public void run() {
        this.heartBeatExecutor.scheduleAtFixedRate(new Runnable() {
            @Override
            public void run() {
               System.out.println(Thread.currentThread().getId());
            }
        }, 0, 5, TimeUnit.SECONDS);
    }

    public open(ScheduledExecutorService heartBeatExecutor) {
        this.heartBeatExecutor = heartBeatExecutor;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值