java web项目在双机下的定时任务

在多台服务器部署的Java Web项目中,如何避免定时任务重复执行是一个挑战。本文提出了两种策略:一是通过比较运行服务器的主机名与预设主机名执行任务;二是利用数据库中的tasktime字段记录执行时间。然而,这两种方法都有其局限性,如主机宕机会导致任务停止,而精确定时可能引发任务执行次数丢失。通过在方案二中加入同步锁可以部分缓解问题。
摘要由CSDN通过智能技术生成

问题:一个项目,部署在多台服务器上,里面有一个定时任务需要执行,会重复执行多次。
解决方法:
方案一:项目中配置一个运行定时任务的主机名,然后在启动定时任务的方法内部,获取当前运行的服务器的主机名,与配置的主机名是否一致,假如一致,则任务继续往下执行;不一致,直接return。
具体代码:
1、linux系统下,执行hostname命令,得到如下结果:localhost.localdomain,其中localhost表示主机名,localdomain为域名,具体参考:linux下怎么查看主机名以及修改主机名
2、java代码:

            //系统配置的主机名,多个,以逗号分割
String host = "localhostName";
host = host.replaceAll(" ", "");
String[] hosts = host.split(
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值