首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在我调用timer.cancel()方法之后,TimerTask再次运行

在调用timer.cancel()方法之后,TimerTask不会再次运行。timer.cancel()方法用于取消计时器中的所有任务,包括已经执行的任务和尚未执行的任务。一旦调用了timer.cancel()方法,计时器将被终止,不会再触发任何任务的执行。

TimerTask是一个抽象类,用于定义要在计时器中执行的任务。当创建一个TimerTask的实例并将其添加到计时器中时,计时器会按照指定的时间间隔执行该任务。但是一旦调用了timer.cancel()方法,计时器将停止并取消所有任务的执行。

在调用timer.cancel()方法之后,如果需要再次执行任务,需要重新创建一个Timer实例,并将新的TimerTask添加到其中。例如,可以使用以下代码重新创建计时器并添加新的任务:

代码语言:java
复制
Timer timer = new Timer();
TimerTask task = new TimerTask() {
    @Override
    public void run() {
        // 任务逻辑
    }
};
timer.schedule(task, delay);

在上述代码中,重新创建了一个Timer实例,并创建了一个新的TimerTask实例。然后使用timer.schedule()方法将新的任务添加到计时器中,并指定延迟时间delay。

对于腾讯云相关产品,可以使用腾讯云函数(云函数)来实现定时任务的功能。腾讯云函数是一种无服务器计算服务,可以在云端运行代码,无需关心服务器的运维和扩展。通过创建一个云函数,可以编写定时任务的逻辑,并按照指定的时间间隔触发执行。具体的使用方法和示例可以参考腾讯云函数的官方文档:腾讯云函数

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android学习笔记----定时问题

如果设置第三个参数就要记得在OnDestroy取消,不然activity销毁后定时任务仍然存在。 如果在这里的run方法更新ui就需要使用runOnUiThread()方法。...在4.0之后谷歌强制要求连接网络不能在主线程进行访问 只有主线程(UI线程)才可以更新UI 定时代码如下 MainActivity .java import android.os.Bundle; import...// 比如说定时器重复10个任务,cancel调用,我正在执行的任务就是最后一个任务,剩下的9个任务我不做了。...timer.cancel();// 如果是第二种定时方法需要取消定时器 // 如果此方法发生时任务正在运行,则任务将运行到完成,但不会再运行。...// 也就是重复任务取消,最后任务表中的所有任务你就善始善终做完吧,可能还需要做几个任务这一轮才结束 // 从重复定时器任务的run方法中调用此方法绝对保证计时器任务不会再次运行。

24210
  • Java定时器(Timer)「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 1.介绍 Timer和TimerTask是用于在后台线程中调度任务的java util类。...注意,如果我们正在运行这是一个JUnit测试,我们应该添加一个Thread.sleep(delay*2)调用,以允许定时器的线程在JUnit测试停止执行之前运行任务。...2.2 指定时间执行 现在,让我们看看Timer#schedule(TimerTask,Date)方法,它将日期而不是long作为其第二个参数,这实现了在某个时刻而不是在延迟之后执行任务。...因为仍然有可能在某个时刻或某个延迟之后开始执行任务。 至于固定频率调度,我们有两个scheduleAtFixedRate()方法,它们的周期也是以毫秒为单位的。...方法中去掉调度任务 在run()方法对TimerTask本身的实现中调用TimerTask.cancel()方法: @Test public void givenUsingTimer_whenCancelingTimerTask_thenCorrect

    1.4K20

    android的timertask,Android 中 Timer 和 TimerTask的使用「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 Android中Timer是一个普通的类,其中有几个重要的方法;而TimerTask则是一个抽象类,其中含有一个抽象方法run()。...使用Timer类中的schedule()方法可以完成对TimerTask的调度,该方法具有三个参数,其函数声明如下: public void schedule(TimerTask task, long...多个TimerTask是可以共用一个Timer的,通过调用Timer的schedule方法可以创建一个线程,并且调用一次schedule后TimerTask是无限的循环下去的,使用Timer的cancel...Auto-generated method stub secondLeft–; textView.setText(“” + secondLeft); if (secondLeft < 0) { timer.cancel...runOnUiThread方法运行在主线程。

    85610

    Timer和TimerTask详解

    大家好,又见面了,我是你们的朋友全栈君。 如果要执行一些简单的定时器任务,无须做复杂的控制,也无须保存状态,那么可以考虑使用JDK 入门级的定期器Timer来执行重复任务。...调用Timer关闭函数和使线程退出是一样的,只能然其运行到某个标志退出处 ————————————————————– 1....,如果是之后则任务已经开始执行,如果cancel带的参数 是ture表示这种情况下要调用执行者interrupt,至于interrupt会不会有效不好说 2....当然,你可以通过以下四种方法终止一个timer线程: 调用timer的cancle方法。你可以从程序的任何地方调用此方法,甚至在一个timer task的run方法里。...调用System.exit方法,使整个程序(所有线程)终止。 Reminder的例子使用了第一种方式。

    1.1K20

    timer定时器用法_定时器怎么调时间

    大家好,又见面了,我是你们的朋友全栈君。   在JDK类库中Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务。...Sschedule(task, Date)的用法   此方法用于在指定的时间执行一次task。...默认的执行完毕不会结束线程,因为timer的成员属性thread默认是非守护线程,而且其run方法中通过轮询同步调用task的run()方法。...另一种办法是等待执行完之后调用timer.cancel() public static void main(String[] args) throws InterruptedException { LOGGER.info...Sschedule(TimerTask task, Date firsttime,long period)的用法   此方法用于在指定的时间执行一次之后任务之后,在指定的period的时间间隔后不停的执行任务

    2.4K20

    一个Java后台程序的实例

    时隔今日,再次有幸参与IBM一个开发项目,这个项目同样需要一个类似的后台运行程序,这个程序的任务是:每隔一天检查数据库中的数据,并对符合某些条件记录进行某操作。...任务很简单,为了今后扩展方便,我将这个设计成了一个多任务可管理的后台程序。周未我设置了两个任务同时执行,一任务每10秒执行一次,另一任务每1秒执行一行,运行了两天,运行较果良好。...我们继承TimerTask类后,将所要运行的任务封装其run方法中;Timer可以管理几千个任务(TimerTask),注意,同一个任务对象不能两次加入到Timer中执行。   ..." + name + "被终止");               //终止本任务, 调用Timer.cancel()是终止Timer的所有任务。               ...这里建立一个TimerTask对象池tasks,它是一个静态变量,这样在getInstance时不必总是要新生成一个TimerTask。

    74310

    JDK中的timer正确的打开与关闭

    从这个例子可以看出一个典型的利用timer执行计划任务的过程如下: new一个TimerTask的子类,重写run方法来指定具体的任务,在这个例子里,我用匿名内部类的方式来实现了一个TimerTask的子类...System.gc() 系统默认当Timer运行结束后,如果没有手动终止,那么则只有当系统的垃圾收集被调用的时候才会对其进行回收终止。...因此,可以手动System.gc(); 但是Sytem.gc()在一个项目中是不能随便调用的。...因为一个tomcat只启动一个进程,而JVM的垃圾处理器也只有一个,所以在一个工程里运行System.gc也会影响到其他工程。...,而是调用了queue的clear方法和queue的notify方法,clear是个自定义方法,notify是Objec自带的方法,很明显是去唤醒wait方法的。

    1.8K20

    Android实现计时与倒计时的几种方法

    方法一 Timer与TimerTask(Java实现) public class timerTask extends Activity{ private int recLen = 11; private...public void run() { recLen--; txtView.setText(""+recLen); if(recLen < 0){ timer.cancel...Message msg){ switch (msg.what) { case 1: txtView.setText(""+recLen); if(recLen < 0){ timer.cancel...1,方法2和方法3,都是倒计时 方法4,方法5,都是计时 计时和倒计时,都可使用上述方法实现(代码稍加改动) UI线程比较 方法1,方法2和方法3,都是在UI线程实现的计时; 方法4和方法5,是另开Runnable...线程实现计时 实现方式比较 方法1,采用的是Java实现,即Timer和TimerTask方式; 其它四种方法,都采用了Handler消息处理 推荐使用 如果对UI线程交互要求不很高,可以选择方法2和方法

    1.3K51

    Java 定时器 Timer 的使用.

    在JDK中Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务,但封装任务的类却是TimerTask类。      ...void run() { DateFormat dateFormat = TimeUtil.df.get(); System.out.println("我的任务运行了..." + dateFormat.format(new Date())); } }       通过执行Timer.schedule(TimerTask task,Date time) 在执行时间运行任务...前面提到任务的执行是以对列的方式一个个被顺序执行的,TimerTask.cancel() 指的是 把当前任务从任务对列里取消。Timer.cancel() 值的是把当前任务队列里的所有任务都取消。...就是如果任务 在周期性运行过程中被打断了,scheduleAtFixedRate 会尝试把之前落下的任务补上运行。而schedule就不管了,接着运行接下来的任务就行了,可以参考这篇博客,写的很生动。

    1.2K90

    接收数据实时更新的波状曲线图

    只不过我没有到达屏幕的最右边就开始向左滑动是为了理解更方便 其实图中的波状曲线并不是在右边一个一个的增加,而是数据增加,每次都全部重绘的一遍而已,看起来的效果就像右边在增加一样,这点要理解 先看代码 timer.cancel(); timerTask = null; timer = null; }} import android.content.Context...重点: 1.MainActivity里的pathView.setData(-100);方法调用了PathView的setData方法,并传入了更新的值 2.PathView调用了postInvalidate...,超过了这个值就会出问题 那么我是如何解决的呢?...1.当数据到达一定量的时候,删掉一部分历史的数据 2.删的同时通过scrollTo(0, 0)方法瞬间滑动最左边 这样就相当于一直在一个固定长度的View上绘图,就不会出问题了,只不过会有少许的偏差,可以调节到滑动的速度和每个波图的

    1.5K20

    Java 定时器Timer「建议收藏」

    大家好,又见面了,我是你们的朋友全栈君。 简介 Timer是Java提供的原生Scheduler(任务调度)工具类,用来在一个后台线程计划执行指定任务。...Timer类提供了以下方法: schedule(TimerTask task, Date time) 安排在 “指定的时间” 执行 指定的任务(只执行一次) schedule(TimerTask task..., Date firstTime , long period) 安排指定的任务在 “指定的时间 ” 开始进行 “重复” 的固定延迟执行 schedule(TimerTask task,long delay...(TimerTask task,Date firstTime,long period) 安排指定的任务在指定的时间开始进行重复的固定速率执行 scheduleAtFixedRate(TimerTask...(Timer timer) { this.timer = timer; } @Override public void run() { System.out.println("****"); timer.cancel

    44930

    多线程设计模式解读1—Guarded Suspension(保护性暂挂模式)

    大家好,今天我们给大家介绍一个多线程设计模式的一个概念,我们平时业务代码写得比较多,因此,如果刚上手写比较复杂多线程代码,很有可能会埋下一些坑,而这些坑一时之间都是很难发现,需要经过严格测试,甚至上线运行之后才会在生产环境显现出来...,其他线程已获取了锁并修改了保护条件中的状态;由于一个条件队列与多个保护条件相关,假设A在条件队列等待保护条件a,当B线程因为同一条件队列相关的另一个保护条件b变成真,就会调用notifyAll或者notify...因此,每次线程从wait中唤醒时,都必须再次测试保护条件是否成立,我们通常在一个循环中调用wait,相关代码的标准形式如下: synchronized(lock){ while(!...helper.stateChanged方法 timer.schedule(new TimerTask() { @Override public void run() {...helper.stateChanged方法 timer.schedule(new TimerTask() { @Override public void run() {

    98340
    领券