前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java多次调用,最后一次调用后才执行

java多次调用,最后一次调用后才执行

作者头像
阿超
发布于 2022-08-16 08:54:47
发布于 2022-08-16 08:54:47
1.5K01
代码可运行
举报
文章被收录于专栏:快乐阿超快乐阿超
运行总次数:1
代码可运行

追求使你充实,成功和失败都是伴奏。——史铁生

前段时间写了java防抖,不过之前写的都是在一定时间内只执行一次,超过这个时间,防抖又失效了,假设我现在有这样一个需求:

在一定的间隔内多次调用一个函数,只有最后一次才生效

例如,我设定的间隔为1秒,那么只要我在1秒内触发了第二次,那么就重新计时

废话不多说,贴代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.ruben;

import com.ruben.utils.TimeUtil;

import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.Handler;
import java.util.logging.LogRecord;

/**
 * @ClassName: TimeIsExpensiveDemo
 * @Date: 2020/9/28 21:32
 * @Description:
 */
public class TimeIsExpensiveDemo {

    public static void main(String[] args) {
        long total = 0;
        for (int i = 1; i <= 10; i++) {
            long startTime = System.nanoTime();
            // 真正执行的函数,其他都是计时用的
            ruben();
            try {
                Thread.sleep(500);
                long endTime = System.nanoTime();
                total += endTime - startTime;
                System.out.println("执行了" + total / (1000.0 * 1000.0) + "ms");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 初始化任务
     */
    public static TimerTask timerTask = new TimerTask() {
        @Override
        public void run() {
        }
    };

    /**
     * 执行的函数
     */
    public static void ruben() {
        // 每次进来都清零
        timerTask.cancel();
        // 然后创建一个新的任务
        timerTask = new TimerTask() {
            public void run() {
                System.out.println("最后一次循环后才执行我");
            }
        };
        // 执行任务
        new Timer().schedule(timerTask, 1000);
    }

}

执行结果

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java函数防抖
无论执行多少次,在schedule()第二个参数设置的时间(毫秒值)内都只会执行一次
阿超
2022/08/16
4850
java函数防抖
quartz
Quartz是功能强大的开源作业调度库,几乎可以集成到任何Java应用程序中-从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数以万计,数以万计的工作。任务定义为标准Java组件的作业,它们实际上可以执行您可以对其执行的任何编程操作。Quartz Scheduler包含许多企业级功能,例如对JTA事务和集群的支持。
阿超
2022/08/16
1.4K0
quartz
Java 容器 & 泛型(2):ArrayList 、LinkedList和Vector比较
序列(List),有序的Collection,正如它的名字一样,是一个有序的元素列表。确切的讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。实现List的有:ArrayList、LinkedList、Vector、Stack等。值得一提的是,Vector在JDK1.1的时候就有了,而List在JDK1.2的时候出现,待会我们会聊到ArrayList和Vector的区别。
哲洛不闹
2018/09/19
4670
Java 容器 & 泛型(2):ArrayList 、LinkedList和Vector比较
java集合【12】——— ArrayList,LinkedList,Vector的相同点与区别是什么?
要想回答这个问题,可以先把各种都讲特性,然后再从底层存储结构,线程安全,默认大小,扩容机制,迭代器,增删改查效率这几个方向入手。
秦怀杂货店
2021/03/26
4740
6种快速统计代码执行时间的方法,真香!
我们在日常开发中经常需要测试一些代码的执行时间,但又不想使用向 JMH(Java Microbenchmark Harness,Java 微基准测试套件)这么重的测试框架,所以本文就汇总了一些 Java 中比较常用的执行时间统计方法,总共包含以下 6 种,如下图所示:
磊哥
2020/07/15
1.6K0
6种快速统计代码执行时间的方法,真香!
【蓝桥杯Java_C组·从零开始卷】第八节、集合——list详解(ArrayList、 LinkedList 和 Vector之间的区别)
ArrayList、 LinkedList 和 Vector都实现了List接口,是List的三种实现,所以在用法上非常相似。他们之间的主要区别体现在不同操作的性能上。后面会详细分析。
红目香薰
2022/11/29
2790
【蓝桥杯Java_C组·从零开始卷】第八节、集合——list详解(ArrayList、 LinkedList 和 Vector之间的区别)
Java 并发专题 : Timer的缺陷 用ScheduledExecutorService替代「建议收藏」
继续并发,上篇博客对于ScheduledThreadPoolExecutor没有进行介绍,说过会和Timer一直单独写一篇Blog.
全栈程序员站长
2022/09/05
5040
【小家java】Apache Commons-lang3提供的StopWatch执行时间监视器,以及Spring提供的StopWatch分析
编码过程中我们经常会希望得到一段代码(一个方法)的执行时间,本文将介绍两种时间监视器(秒表)来让你优雅的、灵活的处理这个问题。
YourBatman
2019/09/03
4.6K0
Java的HashSet vs. TreeSet vs. LinkedHashSet比较
set是用来存储没有重复的元素的。set在java中有三种比较常用实现:HashSet, TreeSet and LinkedHashSet。所以,不同的时候我们自然需要考虑如何选择使用不同的set。这就要我们对于这三种set的特点和实现有一定的了解。一般来说,如果我们需要一个存取效率比较高的set,我们可以选择hashset,如果我们需要一个可以自动给元素排序的set,我们就需要使用treeset,如果我们想要元素按插入的样子保持顺序,那么我们就可以使用LinkedHashSet。
desperate633
2018/08/22
6770
Java的HashSet vs. TreeSet vs. LinkedHashSet比较
Java中的Timer和TimerTask的使用
Timer是一个定时器类,通过该类可以为指定的定时任务进行配置。TimerTask类是一个定时任务类,该类实现了Runnable接口,而且是一个抽象类,如下所示:
用户1289394
2021/02/05
9680
java 中定时器
import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; /** * 说明:java定时器 * 作者:FH Admin * from:fhadmin.cn */ public class TimeTest { public static void main(String[] args) { timer1();
FHAdmin
2022/01/21
6480
性能有点不错的时间工具类
人们宁愿去关心一个蹩脚电影演员的吃喝拉撒和鸡毛蒜皮,而不愿了解一个普通人波涛汹涌的内心世界。——路遥《平凡的世界》 首先是依赖lang3 <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <vers
阿超
2022/08/16
3710
性能有点不错的时间工具类
数据库轮询与延时任务实现:技术详解与Java代码示例
摘要 在项目开发中,任务的定时处理是一个常见需求。本文面向小白详细介绍四种常用的延时任务处理方案:数据库轮询、JDK延迟队列、Netty时间轮算法、消息队列的延时消息。每种方案都有其优缺点,适合不同场景。本文通过详细代码示例,帮助大家理解这些延时任务方案。
默 语
2024/11/22
1590
数据库轮询与延时任务实现:技术详解与Java代码示例
如何计算程序运行时间
在Java中,您可以使用System.currentTimeMillis()或System.nanoTime()方法来计算程序运行时间。这些方法可以在程序的不同部分插入时间戳,并计算时间差来得到程序运行的时间。
默 语
2024/11/20
1180
如何计算程序运行时间
深入探究JDK中Timer的使用方式
在项目开发过程中,经常会遇到需要使用定时执行或延时执行任务的场景。比如我们在活动结束后自动汇总生成效果数据、导出Excel表并将文件通过邮件推送到用户手上,再比如微信运动每天都会在十点后向你推送个位数的微信步数。
京东技术
2021/04/22
1.4K0
深入探究JDK中Timer的使用方式
java设置定时器_java定时器的使用(Timer)
定时器是java的一大特色,本篇文章我们会了解定时器的配置有哪些方式,下面就跟小编一起看看吧。
全栈程序员站长
2022/09/30
1.4K0
代码评审,揭示黑盒背后的真相
"They think I am hiding in the shadows, but I am the shadows."
dongfanger
2023/08/09
2180
代码评审,揭示黑盒背后的真相
JAVA中HashSet、TreeSet和LinkedHashSet的比较
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
喜欢ctrl的cxk
2019/11/08
1K0
Timer和TimerTask详解
如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用JDK 入门级的定期器Timer来执行重复任务。
全栈程序员站长
2022/07/25
1.1K0
为什么总说不要循环调用dao
比如一个org.apache.ibatis.session.defaults.DefaultSqlSession#selectList(java.lang.String, java.lang.Object, org.apache.ibatis.session.RowBounds)
阿超
2022/08/16
5880
为什么总说不要循环调用dao
推荐阅读
相关推荐
java函数防抖
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验