首页 > 编程语言 >程序设计

程序设计

时间:2023-12-09 15:34:25浏览次数:27  
标签:new 任务 rLock Throwable 程序设计 执行 方法

任务异步执行
// 定时任务设计思路:
// 1、先把任务修改为执行中即可结束此方法,同时异步调用任务执行方法
// 2、定时任务扫描执行中的任务,遍历任务执行

    private ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0, TimeUnit.SECONDS, new LinkedBlockingQueue(1), new ThreadPoolExecutor.DiscardOldestPolicy());

    // 定时任务每隔30秒调用一次
    @Scheduled(cron="0/30 * * * * ?")
    public void taskHandle() {
        // 由于定时调度默认是单线程的,这里可以快速执行完成本方法
        threadPoolExecutor.submit(() -> {
            try {
                // 需要根据状态查询数据,这里给之前的方法预留事务事务的时间
                Thread.sleep(1000);
                List list = new ArrayList();
                // 可以根据需要并发处理任务
                list.parallelStream().forEach(a -> prepareHandle());
            } catch (Throwable e) {
                log.error("", e);
            }
        });
    }

    // 预调用方法处理
    private void prepareHandle() {
        // 获取锁
        RLock rLock = new RedissonLock();
        if (rLock.tryLock()) {
            try {
                // 执行过程会再次验证任务状态,这里给之前的方法预留事务提交
                Thread.sleep(1000);
                concreteMethod();
            } catch (Throwable e) {
                log.error("", e);
            } finally {
                rLock.unlock();
            }
        }
    }

    // 本方法设置为事务方法,以便于本方法的内容同时成功、失败
    @Transactional(rollbackFor = Throwable.class)
    public void concreteMethod() {
        // 再次获取可重入锁
        RLock lock = new RedissonLock();
        if (lock.tryLock()) {
            try {
                // 1、判断是否在执行中,否则在这里直接结束执行
                // 2、执行处理逻辑
                // 3、无报错的情况下即为处理成功,执行成功流程
            } catch (Throwable e) {
                log.error("", e);
                // 4、有异常的情况下,执行异常处理流程
            } finally {
                lock.unlock();
            }
        }
    }

标签:new,任务,rLock,Throwable,程序设计,执行,方法
From: https://www.cnblogs.com/rbcd/p/17891018.html

相关文章

  • 2023-2024-1 20231424《计算机基础与程序设计》第11周学习总结
    2023-2024-120231424《计算机基础与程序设计》第11周学习总结作业信息作业属于的课程<班级链接>(2022-2023-1-计算机基础与程序设计)作业要求<作业要求>(2022-2023-1计算机基础与程序设计第一周作业)作业目标《计算机科学概论》第15,16章和《C语言程序设计》第10章......
  • 2023-2024-1 20231317《计算机基础与程序设计》第十一周学习总结
    这个作业属于哪个课程<班级的链接>(如2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2022-2023-1计算机基础与程序设计第十一周作业)这个作业的目标<《C语言程序设计第10章》《计算机科学概论第15、16章》>作业正文https://www.cnblogs......
  • 《计算机程序设计艺术》读后感(1)
    最近读了《计算机程序设计艺术》这本书翻开这本书,第一页是高德纳专门为中国读者写的序,里面写到了高德纳这个名字是他1977年访问中国前夕姚期智的夫人姚储枫给他起的中文名。他也希望中国读者能记住他的这个中文名。最后还写了一段激励读者钻研计算机程序设计的话。这个序言一下子......
  • # 2023-2024-1 20231308 《计算机基础与程序设计》第十一周学习总结
    2023-2024-120231308《计算机基础与程序设计》第十一周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十一周作业这个作业的目标计算机网络,网络拓扑,云计算,网络安全,Web,HTML,CSS,Javas......
  • 2023-2024-1 20231402《计算机基础与程序设计》第十一周学习总结
    2023-2024-120231402《计算机基础与程序设计》第十一周学习总结作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十一周作业这个作业的目标自学计算机科学概论第15,16章,《C语言程序设计》第10......
  • 2023-2024 20231302《计算机基础与程序设计》第十一周学习总结
    作业信息这个作业属于哪个课程2023-2024-1-计算机基础与程序设计这个作业要求在哪里2023-2024-1计算机基础与程序设计第十一周作业这个作业的目标计算机网络、网络拓扑、云计算、网络安全、Web、HTML,CSS,Javascript、XML作业正文https://www.cnblogs.com/9q2z2z......
  • 2023-2024-120231329《计算机基础与程序设计》第11周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK11这个作业的目标计算机科学概论第15,16章并完成云班课测试《C语言程序设计》第10章并完成云班课测试作业正文https:/......
  • 2023-2024-1 20231414 《计算机基础与程序设计》第十一周学习总结
    学期(2023-2024-1)学号(20231414)《计算机基础与程序设计》第十一周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2023-2024-1计算机基础与程序设计第十一周作业)这个作业的目标<写上具体......
  • 2023-2024 20231313《计算机基础与程序设计》第十一周学习总结
    2023-202420231313《计算机基础与程序设计》第十一周学习总结作业速达作业课程班级链接作业要求计算机基础与程序设计第十一周学习总结作业内容计算机科学概论第15,16章《C语言程序设计》第10章并完成云班课测试,计算机网络,网络拓扑,云计算,网络安全,Web,HTML,CSS,Jav......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第十周学习总结
    2023-2024-120231320《计算机基础与程序设计》第十周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第十周作业)这个作业的目标<自学《计算机基础与......