当前位置: 首页 > news >正文

海南住房和城乡建设部网站黄岐建网站

海南住房和城乡建设部网站,黄岐建网站,wordpress 中文水印,企业官方网站建设java定时器的使用#xff08;Timer#xff09;1、在应用开发中#xff0c;常常须要一些周期性的操作#xff0c;比方每5分钟运行某一操作等。对于这种操作最方便、高效的实现方式就是使用java.util.Timer工具类。private java.util.Timer timer;timer new Timer(true);tim… java定时器的使用Timer 1、在应用开发中常常须要一些周期性的操作比方每5分钟运行某一操作等。 对于这种操作最方便、高效的实现方式就是使用java.util.Timer工具类。 private java.util.Timer timer; timer new Timer(true); timer.schedule( new java.util.TimerTask() { public void run() { //server.checkNewMail(); 要操作的方法} }, 0, 5*60*1000); 第一个參数是要操作的方法第二个參数是要设定延迟的时间第三个參 数是周期的设定每隔多长时间运行该操作。 使用这几行代码之后Timer本身会每隔5分钟调用一遍 server.checkNewMail()方法不须要自己启动线程。Timer本身也是多线程同 步的多个线程能够共用一个Timer不须要外部的同步代码。 2、 (1)Timer.schedule(TimerTask task,Date time)安排在制定的时间运行指定的 任务。 (2)Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定 的任务在指定的时间開始进行反复的固定延迟运行 (3)Timer.schedule(TimerTask task,long delay)安排在指定延迟后运行指定的 任务 (4)Timer.schedule(TimerTask task,long delay,long period)安排指定的任务 从指定的延迟后開始进行反复的固定延迟运行 (5)Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period) 安排指定的任务在指定的时间開始进行反复的固定速率运行 (6)Timer.scheduleAtFixedRate(TimerTask task,long delay,long period)安 排指定的任务在指定的延迟后開始进行反复的固定速率运行 用Java Timer API 进行时间调度开发的相关注意点 java.util这个包中能够找到Timer和TimerTask这两个类。Timer直接从Object 继承它相当于一个计时器可以用它来指定某个时间来运行一项任务或者 每隔一定时间间隔重复运行同一个任务。创建一个Timer后就会生成一个线程 在背后执行来控制任务的执行。而TimerTask就是用来实现某项任务的类 它实现了Runnable接口因此相当于一个线程。 怎样实现自己的任务调度 1、继承TimerTask注意TimerTask是实现Runnable接口的因此仅仅要重载run() 方法就可以。 2、创建Timer对象调用schedule()方法。 相关注意点分析 1、任务调度要优先考虑实时保证 因为Java的天性而且在开发JDK的过程中要考虑到不同平台而不同平台的 线程调度机制是不同的因此各种平台下JVM 的线程调度机制也是不一致的。 从而Timer不能保证任务在所指定的时间内运行。另外因为TimerTask是实现 Runnable接口的在TimerTask被放进线程队列睡眠一段时间wait之后 当到了指定的该唤起该TimerTask时因为运行的确切时机取决于JVM的调度策 略和当前还有多少线程在等待CPU处理。因此就不能保证任务在所指定的时间 内运行。通常在例如以下两种情况下导致任务延迟运行 1、有大量线程在等待运行 2、GC机制的影响导致延迟 这也是为什么在Timer API中存在两组调度方法的原因。即 1、schedule() 用固定延迟调度。使用本方法时在任务运行中的每个延迟会传播到兴许的任 务的运行。 2、scheduleAsFixedRate() 用固定比率调度。使用本方法时全部兴许运行依据初始运行的时间进行调度 从而希望减小延迟。 详细使用哪一个方法取决于哪些參数对你的程序或系统更重要。 2、每一个Timer对象要在后台启动一个线程。这样的性质在一些托管的环境下不推 荐使用比方在应用server中。由于这些线程不在容器的控制范围之内了。 详细Java API 中的Timer 类和TimerTask类的描写叙述例如以下 java.util 类Timer java.lang.Object java.util.Timer public class Timer extends Object 一种线程设施用于安排以后在后台线程中运行的任务。可安排任务运行一次 或者定期反复运行。 与每一个Timer 对象相相应的是单个后台线程用于顺序地运行全部计时器任务。 计时器任务应该迅速完毕。假设完毕某个计时器任务的时间太长那么它会“独 占”计时器的任务运行线程。因此这就可能延迟兴许任务的运行而这些任务 就可能“堆在一起”而且在上述令人讨厌的任务终于完毕时才可以被高速连续 地运行。 对Timer 对象最后的引用完毕后而且全部未处理的任务都已运行完毕后计 时器的任务运行线程会正常终止而且成为垃圾回收的对象。可是这可能要非常 长时间后才发生。默认情况下任务执行线程并不作为守护线程来执行所以 它可以阻止应用程序终止。假设调用方想要高速终止计时器的任务运行线程那 么调用方应该调用计时器的cancel 方法。 假设意外终止了计时器的任务运行线程比如调用了它的stop 方法那么全部 以后对该计时器安排任务的尝试都将导致IllegalStateException就好像调用 了计时器的cancel 方法一样。 此类是线程安全的多个线程能够共享单个Timer 对象而无需进行外部同步。 此类不提供实时保证它使用Object.wait(long) 方法来安排任务。 实现注意事项此类可扩展到大量同一时候安排的任务存在数千个都没有问题。 在内部它使用二进制堆来表示其任务队列所以安排任务的开销是O(log n) 当中n 是同一时候安排的任务数。 实现注意事项全部构造方法都启动计时器线程。 从下面版本号開始 1.3 另请參见 TimerTask, Object.wait(long) 构造方法摘要 Timer() 创建一个新计时器。 Timer(boolean isDaemon) 创建一个新计时器能够指定其相关的线程作为守护程序执行。 Timer(String name) 创建一个新计时器其相关的线程具有指定的名称。 Timer(String name, boolean isDaemon) 创建一个新计时器其相关的线程具有指定的名称而且能够指定作为守护程序运 行。 方法摘要 void cancel() 终止此计时器丢弃全部当前已安排的任务。 int purge() 从此计时器的任务队列中移除全部已取消的任务。 void schedule(TimerTask task, Date time) 安排在指定的时间运行指定的任务。 void schedule(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间開始进行反复的固定延迟运行。 void schedule(TimerTask task, long delay) 安排在指定延迟后运行指定的任务。 void schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后開始进行反复的固定延迟运行。 void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间開始进行反复的固定速率运行。 void scheduleAtFixedRate(TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后開始进行反复的固定速率运行。 从类java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 构造方法具体信息 Timer public Timer() 创建一个新计时器。相关的线程不作为守护程序执行。 另请參见 Thread, cancel() Timer public Timer(boolean isDaemon) 创建一个新计时器能够指定其相关的线程作为守护程序执行。假设计时器将用于 安排反复的“维护活动”则调用守护线程在应用程序执行期间必须调用守护线程 可是该操作不应延长程序的生命周期。 參数 isDaemon - 假设应该将相关的线程作为守护程序执行则为true。 另请參见 Thread, cancel() Timer public Timer(String name) 创建一个新计时器其相关的线程具有指定的名称。相关的线程不作为守护程序运 行。 參数 name - 相关线程的名称。 抛出 NullPointerException - 假设name 为null。 从下面版本号開始 1.5 另请參见 Thread.getName(), Thread.isDaemon() Timer public Timer(String name, boolean isDaemon) 创建一个新计时器其相关的线程具有指定的名称而且能够指定作为守护程序运 行。 參数 name - 相关线程的名称。 isDaemon - 假设应该将相关的线程作为守护程序执行则为true。 抛出 NullPointerException - 假设name 为null。 从下面版本号開始 1.5 另请參见 Thread.getName(), Thread.isDaemon() 方法具体信息 schedule public void schedule(TimerTask task, long delay) 安排在指定延迟后运行指定的任务。 參数 task - 所要安排的任务。 delay - 运行任务前的延迟时间单位是毫秒。 抛出 IllegalArgumentException - 假设delay 是负数 或者delay System.currentTimeMillis() 是负数。 IllegalStateException - 假设已经安排或取消了任务或者已经取消计时器。 schedule public void schedule(TimerTask task, Date time) 安排在指定的时间运行指定的任务。假设此时间已过去则安排马上运行该任务。 參数 task - 所要安排的任务。 time - 运行任务的时间。 抛出 IllegalArgumentException - 假设time.getTime() 是负数。 IllegalStateException - 假设已经安排或取消了任务已经取消了计时器或者计时 器线程已终止。 schedule public void schedule(TimerTask task, long delay, long period) 安排指定的任务从指定的延迟后開始进行反复的固定延迟运行。以近似固定的时间 间隔由指定的周期分隔进行兴许运行。 在固定延迟运行中依据前一次运行的实际运行时间来安排每次运行。如 果因为不论什么原因如垃圾回收或其它后台活动而延迟了某次运行则后 续运行也将被延迟。从长期来看运行的频率一般要稍慢于指定周期的倒 数假定Object.wait(long) 所依靠的系统时钟是准确的。 固定延迟执行适用于那些须要“平稳”执行的反复活动。换句话说它适 用于在短期执行中保持频率准确要比在长期执行中更为重要的活动。这包 括大多数动画任务如以固定时间间隔闪烁的光标。这还包含为响应人类 活动所运行的固定活动如在按住键时自己主动反复输入字符。 參数 task - 所要安排的任务。 delay - 运行任务前的延迟时间单位是毫秒。 period - 运行各兴许任务之间的时间间隔单位是毫秒。 抛出 IllegalArgumentException - 假设delay 是负数 或者delay System.currentTimeMillis() 是负数。 IllegalStateException - 假设已经安排或取消了任务已经取消了计时器或者计时 器线程已终止。 schedule public void schedule(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间開始进行反复的固定延迟运行。以近似固定的时间间 隔由指定的周期分隔进行兴许运行。 在固定延迟运行中依据前一次运行的实际运行时间来安排每次运行。如 果因为不论什么原因如垃圾回收或其它后台活动而延迟了某次运行则后 续运行也将被延迟。在长期运行中运行的频率一般要稍慢于指定周期的 倒数假定Object.wait(long) 所依靠的系统时钟是准确的。 固定延迟运行适用于那些须要“平稳”运行的反复运行活动。换句话说 它适用于在短期执行中保持频率准确要比在长期执行中更为重要的活动。 这包含大多数动画任务如以固定时间间隔闪烁的光标。这还包含为响应 人类活动所运行的固定活动如在按住键时自己主动反复输入字符。 參数 task - 所要安排的任务。 firstTime - 首次运行任务的时间。 period - 运行各兴许任务之间的时间间隔单位是毫秒。 抛出 IllegalArgumentException - 假设time.getTime() 是负数。 IllegalStateException - 假设已经安排或取消了任务已经取消了计时器或者计时 器线程已终止。 scheduleAtFixedRate public void scheduleAtFixedRate(TimerTask task, long delay, long period) 安排指定的任务在指定的延迟后開始进行反复的固定速率运行。以近似固定的时间 间隔由指定的周期分隔进行兴许运行。 在固定速率运行中依据已安排的初始运行时间来安排每次运行。假设由 于不论什么原因如垃圾回收或其它背景活动而延迟了某次运行则将高速 连续地出现两次或很多其它的运行从而使兴许运行可以“追赶上来”。从长 远来看运行的频率将正好是指定周期的倒数假定Object.wait(long) 所依靠的系统时钟是准确的。 固定速率运行适用于那些对绝对时间敏感的反复运行活动如每小时准 点打钟报时或者在每天的特定时间执行已安排的维护活动。它还适用于 那些完毕固定次数运行的总计时间非常重要的反复活动如倒计时的计时 器每秒钟滴答一次共10 秒钟。最后固定速率运行适用于安排多个 反复运行的计时器任务这些任务相互之间必须保持同步。 參数 task - 所要安排的任务。 delay - 运行任务前的延迟时间单位是毫秒。 period - 运行各兴许任务之间的时间间隔单位是毫秒。 抛出 IllegalArgumentException - 假设delay 是负数 或者delay System.currentTimeMillis() 是负数。 IllegalStateException - 假设已经安排或取消了任务已经取消了计时器或者计时 器线程已终止。 scheduleAtFixedRate public void scheduleAtFixedRate(TimerTask task, Date firstTime, long period) 安排指定的任务在指定的时间開始进行反复的固定速率运行。以近似固定的时间间 隔由指定的周期分隔进行兴许运行。 在固定速率运行中相对于已安排的初始运行时间来安排每次运行。假设 因为不论什么原因如垃圾回收或其它背景活动而延迟了某次运行则将快 速连续地出现两次或很多其它次运行从而使兴许运行可以赶上来。从长远来 看运行的频率将正好是指定周期的倒数假定Object.wait(long) 所 依靠的系统时钟是准确的。 固定速率运行适用于那些对绝对时间敏感的反复运行活动如每小时准 点打钟报时或者在每天的特定时间执行已安排的维护活动。它还适用于 那些完毕固定次数运行的总计时间非常重要的反复活动如倒计时的计时 器每秒钟滴答一次共10 秒钟。最后固定速率运行适用于安排多次 反复运行的计时器任务这些任务相互之间必须保持同步。 參数 task - 所要安排的任务。 firstTime - 首次运行任务的时间。 period - 运行各兴许任务之间的时间间隔单位是毫秒。 抛出 IllegalArgumentException - 假设time.getTime() 是负数。 IllegalStateException - 假设已经安排或取消了任务已经取消了计时器或者计时 器线程已终止。 cancel public void cancel() 终止此计时器丢弃全部当前已安排的任务。这不会干扰当前正在运行的任务如 果存在。一旦终止了计时器那么它的运行线程也会终止而且无法依据它安排更 多的任务。 注意在此计时器调用的计时器任务的run 方法内调用此方法就能够 绝对确保正在运行的任务是此计时器所运行的最后一个任务。 能够反复调用此方法可是第二次和兴许调用无效。 purge public int purge() 从此计时器的任务队列中移除全部已取消的任务。调用此方法对计时器的行为没有 影响可是将无法引用队列中已取消的任务。假设没有对这些任务的外部引用则 它们就成为垃圾回收的合格对象。 多数程序无需调用此方法。它设计用于一些罕见的应用程序这些程序可 取消大量的任务。调用此方法要以时间来换取空间此方法的执行时可能 与n c log n 呈正比当中n 是队列中的任务数而c 是取消的任 务数。 注意从此计时器上所安排的任务中调用此方法是同意的。 返回 从队列中移除的任务数。 从下面版本号開始 1.5 以下是TimerTask类的介绍 java.util 类TimerTask java.lang.Object java.util.TimerTask 全部已实现的接口 Runnable public abstract class TimerTask extends Object implements Runnable 由Timer 安排为一次运行或反复运行的任务。 从下面版本号開始 1.3 另请參见 Timer 构造方法摘要 protected TimerTask() 创建一个新的计时器任务。 方法摘要 boolean cancel() 取消此计时器任务。 abstract void run() 此计时器任务要运行的操作。 long scheduledExecutionTime() 返回此任务近期实际运行的安排运行时间。 从类java.lang.Object 继承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 构造方法具体信息 TimerTask protected TimerTask() 创建一个新的计时器任务。 方法具体信息 run public abstract void run() 此计时器任务要运行的操作。 指定者 接口Runnable 中的run 另请參见 Thread.run() cancel public boolean cancel() 取消此计时器任务。假设任务安排为一次执行且还未执行或者尚未安排则永远 不会执行。假设任务安排为反复执行则永远不会再执行。假设发生此调用时任务 正在执行则任务将执行完但永远不会再执行。 注意从反复的计时器任务的run 方法中调用此方法绝对保证计时器任 务永远不会再执行。 此方法能够重复调用第二次和以后的调用无效。 返回 假设此任务安排为一次运行且尚未运行或者此任务安排为反复运行则返回true。 假设此任务安排为一次执行且已经执行或者此任务尚未安排或者此任务已经取 消则返回false。一般来说假设此方法阻止发生一个或多个安排运行则返回 true。 scheduledExecutionTime public long scheduledExecutionTime() 返回此任务近期实际运行的安排运行时间。假设在任务运行过程中调用此方法 则返回值为此任务运行的安排运行时间。 通常从一个任务的run 方法中调用此方法以确定当前任务运行能否 充分及时地保证完毕安排活动 public void run() { if (System.currentTimeMillis() - scheduledExecutionTime() MAX_TARDINESS) return; // Too late; skip this execution. // Perform the task } 通常此方法不与固定延迟运行的反复任务一起使用由于其安排运行时间同意 随时间浮动所以毫无意义。 返回 近期发生此任务运行安排的时间採用Date.getTime() 返回的格式。假设任务已开 始其首次运行则返回值不确定。 另请參见 Date.getTime()    转载于:https://www.cnblogs.com/gcczhongduan/p/4355592.html
http://www.zqtcl.cn/news/620617/

相关文章:

  • 做效果图的外包网站徐州低价seo
  • xp系统中做网站服务器吗网站设计版权
  • 化妆品网站建设经济可行性分析怎么做好网站
  • 软件企业网站建设栏目结构图服务公司有哪些
  • 郑州专业做淘宝网站推广哪些公司需要网站开发工程师
  • 如何为企业做网站单页网站推广
  • 做公众号封面图的网站凡客精选app
  • 张家界做旅游网站网业小说畅读服务
  • 短租网站那家做的好网络设计工作好找吗
  • 企业建网站哪家好网络书签 wordpress
  • 网站策划的工作职责有关网站开发的创意
  • 上国外网站dns如何免费做网站推广
  • wordpress导航站的源码网页设计与制作微课教程第4版李敏
  • 建站的好公司wordpress 小工具 调用
  • 郑州高考网站建设wordpress调用多个底部
  • 在线做爰直播网站dw制作网页步骤
  • 视频网站 php源码深圳高端网站建设招聘
  • 企业网站服务费怎么做记账凭证那个网站上有打码的任务做
  • 沈阳做网站优化的公司长春网络建站模板
  • 秒收网站鞍山58同城
  • 模板网站建设方案wordpress系统在线升级
  • 男女做爰视频网站在线视频seo也成搜索引擎优化
  • 网站优化和网站推广深圳市高端网站建设
  • 宁波网站建设优化企业推荐四川省建设厅新网站
  • 哈尔滨模板自助建站优秀的电子商务网站
  • 有站点网络营销平台wordpress 退出 跳转
  • 网站建设的内容规划国内做网站群平台的公司
  • 浙江省院士专家工作站建设网站网站的请求服务做优先级
  • 建一个国外网站多少钱邵阳建设银行网站是多少
  • h5页面有哪些seo关键词智能排名