自己定义定时器(Timer)
近期做项目的时候,用到了java.util.Timer定时器类。也初步使用了,个人感觉不错。只是,在某些方面Timer类无法满足项目的需求。比方,在使用Timer时,调用schedule()方法之后(初始化),其循环周期无法改变,仅仅有调用cancel()方法之后再又一次启动才干将循环周期改变。
自己自己定义了一个定时器线程,可开启、可关闭、可动态的改变循环周期。详细代码例如以下:
/**
* @ClassName: MyTimer
* @Description: TODO 自己定义定时器类
* @author yc
* @date 2014年10月16日 下午10:42:04
*/
package com.keymantek.demo; public class MyTimer extends Thread{ //开关控制标志位
public static boolean flag = false;
//開始时间
//delay in milliseconds before task is to be executed.
public static Long startTime = 1000*3*60L;
//循环时间
//time in milliseconds between successive task executions.
public static Long period = 1000*5*60L; @Override
public void run() {
while(true)
{
try {
//開始时间
Thread.sleep(startTime);
//仅仅有当flag为true时,才採集相关信息
while(flag)
{
//业务逻辑处理块
//循环时间
Thread.sleep(period);
}
//当flag为false时,线程歇息中
Thread.sleep(1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
以下是为此线程提供的控制类:
/**
* @ClassName: TimerReadElectricityMeterTable
* @Description: TODO 自己定义定时器线程控制类
* @author yc
* @date 2014年10月16日 下午10:41:29
*/
package com.keymantek.demo; public class MyTimerController { /**
* @category 初始化自己定义定时线程
*/
public static void initMyTimer() { MyTimer timer= new MyTimer();
timer.start();
System.out.println("初始化自己定义定时线程");
} /**
* @category 开启自己定义定时线程
* @param period 循环时间
*/
public static void startMyTimer(Long period) {
MyTimer.flag = true;
MyTimer.period = period;
System.out.println("开启自己定义定时线程");
} /**
* @category 停止自己定义定时线程
*/
public static void stopMyTimer() {
MyTimer.flag = false;
System.out.println("停止自己定义定时线程");
}
}
也在不断完好中。如有发现bug,请一定给出评论!
自己定义定时器(Timer)的更多相关文章
- Java进阶(十八)Java实现定时器(Timer)
Java实现定时器(Timer) 绪 在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等.对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类.java.u ...
- Android 定时器Timer的使用
定时器有什么用 在我们Android客户端上有时候可能有些任务不是当时就执行,而是过了一个规定的时间在执行此次任务.那么这个时候定时器的作用就非常有用了.首先开启一个简单的定时器 Timer time ...
- storm定时器timer源码分析-timer.clj
storm定时器与java.util.Timer定时器比较相似.java.util.Timer定时器实际上是个线程,定时调度所拥有的TimerTasks:storm定时器也有一个线程负责调度所拥有的& ...
- Java队列和定时器Timer
一: Queue详解 Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...
- Python之路(第四十五篇)线程Event事件、 条件Condition、定时器Timer、线程queue
一.事件Event Event(事件):事件处理的机制:全局定义了一个内置标志Flag,如果Flag值为 False,那么当程序执行 event.wait方法时就会阻塞,如果Flag值为True,那么 ...
- Java基础_死锁、线程组、定时器Timer
一.死锁问题: 死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放.由于线程被无限期地阻塞,因此程序不可能正常终止. 比如,线程一需要第一把所,此时锁处于空闲状态,给了 ...
- Go定时器--Timer
目录 前言 Timer 定时器 简介 使用场景 1. 设定超时时间 2. 延迟执行某个方法 Timer对外接口 1. 创建定时器 2. 停止定时器 3. 重置定时器 其他接口 1. After() 2 ...
- python中实现定时器Timer
实现定时器最简单的办法是就是循环中间嵌time.sleep(seconds), 这里我就不赘述了 # encoding: UTF-8 import threading #Timer(定时器)是Thre ...
- 订餐系统之定时器Timer不定时
经过几天漫长的问题分析.处理.测试.验证,定时器Timer终于定时了,于是开始了这篇文章,希望对还在纠结于“定时器Timer不定时”的同学有所帮助,现在的方案,在系统日志中会有警告,如果您有更好的方案 ...
随机推荐
- 使用Identity Server 4建立Authorization Server (5)
预备知识: http://www.cnblogs.com/cgzl/p/7746496.html 第一部分: http://www.cnblogs.com/cgzl/p/7780559.html 第二 ...
- [eclipse相关] eclipse 安装svn插件
最近看到别人带主题的eclipse,非常羡慕,所以也换了一个eclipse,版本是java ee luna 4.4.2,然后得偿所愿有了花花绿绿的代码界面:) 但是差点被svn搞死,~~~~(> ...
- python3基础视频教程
随着目前Python行业的薪资水平越来越高,很多人想加入该行业拿高薪.有没有想通过视频教程入门的同学们?这份Python教程全集等你来学习啦! python3基础视频教程:http://pan.bai ...
- override和重载的区别
1.父类:public virtual string ToString(){return "a";}子类:public override string ToString(){ret ...
- Qemu 简述
Qemu 架构 Qemu 是纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和硬件打交道,但其实是和 Qemu 模拟出来的硬 ...
- MarkdownPad2代码高亮插件兼容移动端样式
如果不知道MarkdownPad2使用代码高亮插件可以查看前一篇文章<MarkdownPad2使用代码高亮插件> 先看移动端效果图: 移动端点击查看效果 或者手机扫如下二维码: 我们经常阅 ...
- ANTS Performance Profiler 8:支持对Web请求、异步代码和WinRT的性能剖析
下载与激活:http://download.csdn.net/detail/lone112/6734291 离线激活 位于英国的Red Gate Software有限公司最近发布了ANTS Per ...
- [验证码识别技术]字符验证码杀手--CNN
字符验证码杀手--CNN 1 abstract 目前随着深度学习,越来越蓬勃的发展,在图像识别和语音识别中也表现出了强大的生产力.对于普通的深度学习爱好者来说,一上来就去跑那边公开的大型数据库,比如I ...
- JS中JSON对象的定义和取值
1.JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任 ...
- PyCharm教程
1.PyCharm3.0默认快捷键 2.PyCharm默认模板设置 3.字体设置 1.PyCharm3.0默认快捷键(翻译的)PyCharm Default Keymap 1.编辑(Editing) ...