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

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

name) { thread.setName(name); thread.start(); } Timer关闭 在JDK1.5以后,文档中有这么一句话: 对 Timer...Listener中的Timer 很多业务中需要Timer一直执行,不会执行一次后就关闭,上面的例子中,timer调用cancel方法后,该timer就被关闭了。...timer的cancel方法,这样会存在一个问题,就是产生的timer一直不会被关闭,就像上面说的只有当系统的垃圾收集被调用的时候才会对其进行回收终止。...:526) java.util.TimerThread.run(Timer.java:505)] 问题的原因就是我们没有手动去关闭timer,但是如果去调用cancel方法,真实的场景timer只会被执行一次...System.out.println("关闭"); } } 启动程序,过几秒钟后再关闭程序,查看控制台输出 执行 timer 正在执行 timer 正在执行 [2020-04-29

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android 异步操作】Timer 定时器 ( Timer 与 TimerTask 基本使用 | Timer 定时器常用用法 | Timer 源码分析 )

    文章目录 一、Timer 定时器基本使用 二、Timer 定时器常用用法 三、Timer 源码分析 四、Timer 部分源码注释 五、源码及资源下载 参考文档 : Timer 定时器 API 文档 TimerTask...Timer 定时器基本使用 : 创建 Timer 定时器 : 调用构造函数创建定时器 Timer timer = new Timer() ; 分配 TimerTask 定时器任务 : 调用定时器的 schedule...代码示例 : private void timer(){ // Timer 可用于执行延迟任务或循环任务 Timer timer = new Timer();...Timer 定时器构造函数 : ① 创建默认定时器 : 默认以 “Timer-序列号” 作为定时器线程名称 ; public Timer() { this("Timer-" + serialNumber...被 reaper 设置成 false , 用于通知我们定时器对象已经被销毁 ; * 一旦该标志位设置成 true , 并且任务队列中没有任务时 , 没有任务去执行 , 这里就需要优雅的关闭定时器

    2.9K00

    TimerTask(addin timer语音)

    其实就Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类,而具体的TimerTask需要由你自己来实现,例如这样: Timer timer = new Timer();...1000); 这里直接实现一个TimerTask(当然,你可以实现多个TimerTask,多个TimerTask可以被一个Timer会被分配到多个Timer中被调度,后面会说到Timer的实现机制就是说内部的调度机制...接下来看源码 首先看Timer的构造方法有几种: 构造方法1:无参构造方法,简单通过Tiemer为前缀构造一个线程名称: public Timer() { this("Timer-" + serialNumber...public Timer(boolean isDaemon) { this("Timer-" + serialNumber(), isDaemon); } 另外两个构造方法负责传入名称和将timer...可以,任何东西是否是多线程完全看个人意愿,多个Timer自然就是多线程的,每个Timer都有自己的线程处理逻辑,当然Timer从这里来看并不是很适合很多任务在短时间内的快速调度,至少不是很适合同一个timer

    60520

    ScheduledExecutorService和timer的异同

    先来个传统的Timer的例子: package com.jerry.concurrency;   import java.text.ParseException;   import java.text.SimpleDateFormat... {   public static void main(String[] args) throws ParseException {           Timer myTimer = new... Timer();           myTimer.schedule(new Worker(), 1000);//1秒后执行 //      2012-02-28 09:58:00执行         ...+"时间是:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));       }   }   传统的timer的缺点...:Timer对任务的调度是基于绝对时间的;所有的TimerTask只有一个线程TimerThread来执行,因此同一时刻只有一个TimerTask在执行;任何一个TimerTask的执行异常都会导致Timer

    97860

    Timer和TimerTask详解

    2、创建一个Timer实例,通过Timer提供的schedule()方法,将 TimerTask加入到定时器Timer中,同时设置执行的规则即可。...当程序执行了Timer初始化代码后,Timer定时任务就会按照设置去执行。 Timer中的schedule()方法是有多种重载格式的,以适应不同的情况。...当线程被唤醒有两种可能,一是有任务加入,一是Timer启动了关闭,如果是Timer启动了关闭则退出死循环 c....关闭Timer主要操作是将任务队列queue抽空,等任务调度线程执行到2.a.2.b时退出 ————————————————————– 1....调用Timer关闭函数和使线程退出是一样的,只能然其运行到某个标志退出处 ————————————————————– 1.

    1.1K20
    领券