知识大全 JAVA TIMER简单用法学习

Posted

篇首语:石可破也,而不可夺坚;丹可磨也,而不可夺赤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JAVA TIMER简单用法学习相关的知识,希望对你有一定的参考价值。

JAVA TIMER简单用法学习  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Timer有两种执行任务的模式 最常用的是schedule 它可以以两种方式执行任务: :在某个时间(Data) :在某个固定的时间之后(int delay) 这两种方式都可以指定任务执行的频率 看个简单的例子:

复制代码 代码如下: import java io IOException; import java util Timer;

  public class TimerTest public static void main(String[] args) Timer timer = new Timer(); timer schedule(new MyTask() );//在 秒后执行此任务 每次间隔 秒 如果传递一个Data参数 就可以在某个固定的时间执行这个任务 while(true)//这个是用来停止此任务的 否则就一直循环执行此任务了 try int ch = System in read(); if(ch c == ) timer cancel();//使用这个方法退出任务 catch (IOException e) // TODO Auto generated catch block e printStackTrace(); static class MyTask extends java util TimerTask @Override public void run() // TODO Auto generated method stub System out println("________");

  如果你使用的是JDK + 还有一个scheduleAtFixedRate模 式可以用 在这个模式下 Timer会尽量的让任务在一个固定的频率下运行 举例说明:在上面的例子中 我们想让MyTask在 秒钟后 每两秒钟执行一 次 但是因为java不是实时的(其实java实时性很差 ) 所以 我们在上个程序中表达的原义并不能够严格执行 如果我们调用的是 scheduleAtFixedRate 那么 Timer会尽量让你的Task执行的频率保持在 秒一次 运行上面的程序 假设使用的是 scheduleAtFixedRate 那么下面的场景就是可能的: 秒钟后 MyTask 执行一次 因为系统繁忙 之后的 秒后MyTask 才得以执行第二次 然后 Timer记下了这个延迟 并尝试在下一个任务的时候弥补这个延迟 那么 秒后 MyTask 将执行的三次 "以固定的频率而不是固定的延迟时间去执行一个任务"

  下面给出一个复杂点的例子 其中告诉大家怎么退出单个TimerTask 怎么退出所有Task

复制代码 代码如下: package MyTimerTest;

  import java io IOException; import java util Timer; /* * 本类给出了使用Timer和TimerTaske的主要方法 其中包括定制任务 添加任务 * 退出任务 退出定时器 * 因为TimerTask的status域是包级可访问的 所以没有办法在java util 包外 * 得到其状态 这对编程造成一些不便 我们不能判断某个Task的状态了 * */

  public class TimerTest

  public static void main(String[] args) Timer timer = new Timer(); MyTask myTask = new MyTask(); MyTask myTask = new MyTask(); myTask setInfo("myTask "); timer schedule(myTask ); timer scheduleAtFixedRate(myTask ); while (true) try

   byte[] info = new byte[ ]; int len = System in read(info); String strInfo = new String(info len "GBK");//从控制台读出信息 if (strInfo charAt(strInfo length() ) == ) strInfo = strInfo substring( strInfo length() ); if (strInfo startsWith("Cancel ")) myTask cancel();//退出单个任务 // 其实应该在这里判断myTask 是否也退出了 是的话就应该break 但是因为无法在包外得到 // myTask 的状态 所以 这里不能做出是否退出循环的判断 else if (strInfo startsWith("Cancel ")) myTask cancel(); else if (strInfo startsWith("Cancel All")) timer cancel();//退出Timer break; else // 只对myTask 作出判断 偷个懒^_^ myTask setInfo(strInfo); catch (IOException e) // TODO Auto generated catch block e printStackTrace();

  static class MyTask extends java util TimerTask String info = "^_^";

  @Override public void run()

   // TODO Auto generated method stub System out println(info); public String getInfo() return info;

  public void setInfo(String info)

   this info = info;

cha138/Article/program/Java/JSP/201311/20359

相关参考

知识大全 Java语言中Timer类的简洁用法(一)

Java语言中Timer类的简洁用法(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  所有类

知识大全 Java定时任务Timer

Java定时任务Timer  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java定时任务用到的

知识大全 Java计时器Timer 使用

Java计时器Timer使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  所有类型的Java应

知识大全 java定时启动线程

  在实际应用中很多情况需要定时运行程序比如分钟或者小时执行一次程序对此操作java和C#一样可以使用Timer计时器实现即javautilTimer中的Timer类  Timer的定义Timerti

知识大全 性检查的简单快捷方法(利用Post方法和Timer)

性检查的简单快捷方法(利用Post方法和Timer)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 Java学习:线程池的简单构建

Java学习:线程池的简单构建  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  现在服务器端的应用

知识大全 Java中set的简单用法

Java中set的简单用法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Set的最大特点是能去

知识大全 delphi简单判断程序30秒没有键盘和鼠标动作示例

本文为大家详细介绍下delphi判断程序秒没有键盘和鼠标动作这里给timer设置了ms)的参数表示秒的间隔具体实现如下感兴趣的朋友可以参考下哈   以下为原代码(这里给timer设置了ms)

知识大全 java定时器使用

   定时器类Timer在javautil包中使用时先实例化然后使用实例的schedule(TimerTasktasklongdelay)方法设定指定的任务task在指定

知识大全 java多线程中synchronized关键字的用法

  由于同一进程内的多个线程共享内存空间在Java中就是共享实例当多个线程试图同时修改某个实例的内容时就会造成冲突因此线程必须实现共享互斥使多线程同步  最简单的同步是将一个方法标记为synchron