java保证一个方法只能执行一次的问题

 更新时间:2023年08月28日 09:30:39   作者:lipengxs  
这篇文章主要介绍了java保证一个方法只能执行一次的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

java保证一个方法只能执行一次

我们经常会遇到一些情况需要某一个方法或者操作只执行一次,比如说配置信息加载,如果配置信息需要动态刷新,这个不在适用范围。

下面列举几种方式

  • 第一种 如果是web容器,可以使用servlet或者Listener
  • 第二种 如果使用spring容器,则可以直接使用注解@PostConstruct
  • 第三种 main直接执行,可以写在静态代码块
static{
}
  • 第四种 封装成一个方法,使用AtomicBoolean来进行判断是否已执行,或者使用同步锁来保证原子性

java让一个方法一分钟只能被调用一次

可以使用 Java 中的计时器(Timer)和定时任务(TimerTask)配合使用实现一个每分钟只能被调用一次的方法。

具体实现步骤如下

定义一个静态变量

lastCalledTime:用于保存上一次方法被调用的时间戳。

在方法中获取当前时间戳。

如果当前时间戳与上一次调用时间戳之差小于一分钟,则返回不执行,否则执行该方法并更新

lastCalledTime:变量为当前时间戳。

以下是示例代码

public class MyClass {
    private static long lastCalledTime = 0;
    public synchronized void myMethod() {
        long currentTime = System.currentTimeMillis();
        if (currentTime - lastCalledTime < 60000) {
            return;
        }
        // 执行方法操作
        lastCalledTime = currentTime;
    }
}

这里使用了关键字 synchronized,确保多线程环境下仅有一个线程可以进入 myMethod() 方法。

需要注意的是,如果方法执行时间超过一分钟,在调用间隔的限制下仍然可能会导致同时执行的问题。

此外,由于计时器本身也会占用系统资源,如果过度滥用此方法限制,可能会影响应用程序整体性能。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring 整合Shiro 并扩展使用EL表达式的实例详解

    Spring 整合Shiro 并扩展使用EL表达式的实例详解

    Shiro是一个轻量级的权限控制框架,应用非常广泛。本文的重点是介绍Spring整合Shiro,并通过扩展使用Spring的EL表达式。需要的朋友可以参考下
    2018-03-03
  • SpringBoot执行有返回值的异步任务问题

    SpringBoot执行有返回值的异步任务问题

    这篇文章主要介绍了SpringBoot执行有返回值的异步任务问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • dubbo将异常转换成RuntimeException的原因分析 ExceptionFilter

    dubbo将异常转换成RuntimeException的原因分析 ExceptionFilter

    这篇文章主要介绍了dubbo将异常转换成RuntimeException的原因分析 ExceptionFilter问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 详解json string转换为java bean及实例代码

    详解json string转换为java bean及实例代码

    这篇文章主要介绍了详解json string转换为java bean及实例代码的相关资料,这里提供实例代码帮助大家理解,需要的朋友可以参考下
    2017-07-07
  • Java实现商城订单超时取消功能

    Java实现商城订单超时取消功能

    大多数的B2C商城项目都会有限时活动,当用户下单后都会有支付超时时间,当订单超时后订单的状态就会自动变成已取消 ,这个功能的实现有很多种方法,本文的实现方法适合大多数比较小的商城使用。具体实现方式可以跟随小编一起看看吧
    2019-12-12
  • Java SiteMesh新手学习教程代码案例

    Java SiteMesh新手学习教程代码案例

    这篇文章主要介绍了Java SiteMesh新手学习教程代码案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 小程序与后端Java接口交互实现HelloWorld入门

    小程序与后端Java接口交互实现HelloWorld入门

    本文主要介绍了小程序与后端Java接口交互实现HelloWorld入门 ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • 深入理解Java运行时数据区_动力节点Java学院整理

    深入理解Java运行时数据区_动力节点Java学院整理

    这篇文章主要介绍了Java运行时数据区的相关知识,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-06-06
  • java 接口回调实例详解

    java 接口回调实例详解

    这篇文章主要介绍了java 接口回调实例详解的相关资料,所谓回调就是使用java中的多态,需要的朋友可以参考下
    2017-07-07
  • 详解Java程序读取properties配置文件的方法

    详解Java程序读取properties配置文件的方法

    这篇文章主要介绍了Java读取properties配置文件的方法讲解,properties可以被看作是Java世界的ini,Java中有Properties可以操作它,需要的朋友可以参考下
    2016-04-04

最新评论