Java定制定时任务工具类,方便代码嵌入执行。

本文介绍了一个使用Java实现的可嵌入的定时任务工具类,该类支持异步执行和定时任务功能,主要依赖于JUC相关技术。通过提供的调用方式,可以在代码中方便地实现异步任务执行。
摘要由CSDN通过智能技术生成

项目需要一个可嵌入到指定代码位置的定时任务类,写了一个单纯的定时任务类,实现了异步执行,定时执行,超时处理的功能。主要使用了JUC相关技术。

执行一次任务,超时将强制关闭:
   /**
     * 执行一次任务,超时将强制关闭
     * @param jobName 线程名称
     * @param job 具体执行的方法
     * @param timeOut 超时时间
     * @param shutDownTimeOut 超时关闭时间
     * @param shutDownNowTimeOut 立刻关闭时间
     * @param timeUnit 时间单位
     */
    public static void doJobTimeOut (
            String jobName,
            Runnable job,
            int timeOut,
            int shutDownTimeOut,
            int shutDownNowTimeOut,
            TimeUnit timeUnit
    ){
        //定义线程执行开始时间,统计性能用
        long startTime = System.currentTimeMillis();
        //使用ThreadFactory,方便以后统一在创建线程时设置一些参数
        ThreadFactory threadFactory = jobName == null ? DEFAULT_JOB_THREAD : r -> new Thread(r,String.format(prefix+"%s",jobName));
        //获取一个容量为1的线程池
        ExecutorService pool = Executors.newSingleThreadExecutor(threadFactory);

        //执行指定的线程任务,并且在此拦截线程业务处理异常信息
        //Future future = executorService.submit(job);
        Future<?> future = pool.submit(() ->{
            try {
                job.run();
            } catch (Exception e) {
                LOG.error("job error",e);
            }
        });

        try {
            //如果需要等待最多在给定的时间计算完成,然后检索其结果(如果可用)
            future.get(timeOut,timeUnit);
        } cat
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值