阻止在极短的时间重复执行某个函数

/**
 * 阻止在极短的时间重复执行某个函数中的代码
 * @author wanlh
 *
 */
public class ReEventsController {

    private boolean isRepeatFlag = false;
    private MyRunnable mMyRunnable;

    private class MyRunnable implements Runnable{

        @Override
        public void run() {
            // TODO Auto-generated method stub
            isRepeatFlag = false;
        }
    }

    /**
     * 在time时间之内是否重复,阻止代码往下执行
     * @param view
     * @param time
     * @return
     */
    public boolean isRepeat(View view, int time){
        if(mMyRunnable == null)
            mMyRunnable = new MyRunnable();
        if(isRepeatFlag){
            //view.removeCallbacks(mMyRunnable);
            //view.postDelayed(mMyRunnable, time);//2500毫秒恢复,300毫秒之内不允许重复请求数据
            return true;
        }else{
            isRepeatFlag = true;
            view.removeCallbacks(mMyRunnable);
            view.postDelayed(mMyRunnable, time);//2500毫秒恢复,300毫秒之内不允许重复请求数据
        }
        return false;
    }
}

view是WebView.

时间: 2024-11-11 08:40:01

阻止在极短的时间重复执行某个函数的相关文章

一定间隔时间下重复执行一个函数的几个方法

如果有个操作,我们需要过一会儿再做,或者每隔一段时间就要做一次.可以有很多种做法. 独立线程 是的,对.NET Framework本身一知半解的程序员才会使用这种方案.不过,现实中这个方案其实并不少见. public static void Repeat(this Action action, TimeSpan interval) { new Thread(new ThreadStart(() => { while(true) { Thread.Sleep(interval); action()

Spring 定时任务重复执行的问题分析

背景:使用quartz时客户现场不知道为什么跑着跑着就停了,后来决定换成spring定时任务. 当使用spring定时任务时莫名奇妙的就是同一时间重复执行多次任务(通常情况下执行两次,有时候会达到3次).下面记录过程并逐一分析说明,供以后参考: 1.分析原因后发现是由ClassPathXmlApplicationContext导致 通过n多次试验发现: 当任务方法中不含任何业务逻辑时(如:只打印一些标志性的信息),任务能够正常执行,没有重复执行的现象: 当任务方法中包含业务逻辑,或应用程序执行别

Shell脚本的循环:重复执行命令

1.for循环 语法: for  变量名称  in  变量值列表 do 命令 Done For根据变量值列表中的内容,重复执行命令,直到变量值列中的所有内容都取值完后结束. 取值列表的类型:可以是特定文本文件,命令生成列表 案例: vi  user.txt Zsan Lisi :wq vi  useradd_for.sh #!/bin/bash Un=$(cat /root/bin/user.txt) for  i  in  $Un do useradd $i echo  123123 |pas

Laravel5.2队列驱动expire参数设置带来的重复执行问题 数据库驱动

  'connections' => [     ....         'database' => [             'driver' => 'database',             'table' => 'jobs',             'queue' => 'default',             'expire' => 60,         ],         'redis' => [             'driver

重复执行命令的脚本

工作过程中,为了监控状态,经常要不断地重复执行某个命令,因此写了个脚本来简化操作 #! /bin/bash # filename:redo.sh #usage: redo.sh [-d delaytime] [-c count] command #默认间隔时间为15s,无限循环执行 delay=15 count=-1 while getopts d:c: OPTION do     case $OPTION in     d) delay=$OPTARG         ;;     c) co

集群环境下如何防止定时任务重复执行?

起因 最近做项目是遇到这样一个问题:系统需要在每天的16:00向一些符合特定条件的用户发送一份邮件,发送成功后修改掉数据库中对应数据的标志位.本来是没有问题的,但后来系统被部署到了集群环境下,导致每天会向这些用户发送多次同样的数据,遭到了客户的抱怨. 解决 下面来介绍一下处理这种问题的解决办法: 1.在数据库中建立tm_job_group表 Name Type Comments group_id number 组id interval number 时间间隔区分定时任务的间隔即多长时间内不可重复

js定时器整理(执行一次、重复执行)

在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime); 2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数"function()"是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用":"隔开即可. 比如要弹出两个警告窗口,便

使用定时器实现JavaScript的延期执行或重复执行

使用定时器实现JavaScript的延期执行或重复执行 window 对象提供了两个方法来实现定时器的效果,分别是window.setTimeout()和 window.setInterval.其中前者可以使一段代码在指定时间后运行:而后者则可以使一段代码 每过指定时间就运行一次.它们的原型如下: window.setTimeout(expression,milliseconds); window.setInterval(expression,milliseconds); 其中,expressi

Spring的quartz定时器重复执行二次的问题解决

Spring的quartz定时器同一时刻重复执行二次的问题解决 最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此. 打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候,重复启了两个quartz线程. 研究下来发现quartz确实会加载两次: 第一次:web容器启动的时候,读取applicationContext.xml文件时,会加载一次. 第二次:Spring本身会加载applicationConte