关于Timer的问题

问题描述

是这样的,我在程序里面用一个timer调用TimerTask,定时每个几个小时执行。在程序开始启动后的几天还行,可是过了几天后就自动不动了。不知道是为什么?具体代码如下: TimerTask tt = new TimerTask() { public void run() { //下面的线程池被廖博注释掉了,先测测。 Runnable runable = new Runnable() { public void run() { task.collect(); } }; try{ Commons.threadPools.submit(runable); }catch(Exception e){ logger.info(e.toString()); } } }; timer.scheduleAtFixedRate(tt, 0, 6*60*60*1000);里面也没有什么资源没有关闭,因为该程序启动以后只是从ftp上取文件下来,之后就关闭了。不知道为什么会出现这种情况。 问题补充:beneo 写道

解决方案

tem 68 in Effective Java (2nd ed) recommends ScheduledThreadPoolExecutor as a more flexible replacement for Timer你可以在effective java的item#68找到说明,timer只用一个线程来执行任务,这在面对长期任务时,会影响定时的准确性。如果timer唯一的线程抛出未捕获的异常,timer就会停止运行。更多的你在书里面看好了
解决方案二:
用ScheduledThreadPoolExecutor,Timer不推荐使用

时间: 2024-07-28 16:40:32

关于Timer的问题的相关文章

ScheduledExecutorService和timer的异同

先来个传统的Timer的例子: [java] view plaincopy package com.jerry.concurrency;      import java.text.ParseException;   import java.text.SimpleDateFormat;   import java.util.Date;   import java.util.Timer;   import java.util.TimerTask;      public class Traditi

在ASP.NET中使用计时器(Timer)

我在实验中发现在 ASP.NET 中可以使用计时器(Timer)完成一些定时动作.这一点可能会对我们的一些 Web 程序有益. 下面首先介绍我测试使用的一个例子: 首先在 global.asax 中的 Application_OnStart 事件过程中定义计时器,代码如下: [VB.NET] global.asax <%@ import Namespace="System.Timers" %> <script runat="server">

android girdview里面timer没反应

问题描述 android girdview里面timer没反应 我想写一个计时器,点击tock_on 00:00:0开始计时,点击tock_off 暂停.再点击开始清零开始计时.我自己根据秒数转换时间格式字符串的方法写了一个计时器,但是有BUG,网上问了是系统时间调用问题,要换种方法,我用timer重写了一个,点击按钮不起作用.求大神指点,详细点呀,我比较笨我是在adapter中写的.因为gridview的每个item中都需要一个计时器.```public class MyAdapter ext

timer-DEV 第三方控件中的使用中自定义用户控件里面的Timer 控件的使用

问题描述 DEV 第三方控件中的使用中自定义用户控件里面的Timer 控件的使用 用户控件中使用的代码如下:/asp:ScriptManager /asp:Timer /asp:Literal /asp:UpdatePanel 为什么到事件刷新的时候会报 " Sys.WebForms.PageRequestManagerParserErrorException: 未能分析从服务器收到的消息." 这个错误呢?请指教一下 解决方案 asp不会,jsp会一点,祝你好运!

Android中定时器Timer和TimerTask的启动,停止,暂停,继续等操作实例

下面是一个在Android中使用定时器Timer和TimerTask的启动,停止,暂停,继续等操作的demo. 需要注意的问题主要有两点: 1.Timer和TimerTask在调用cancel()取消后不能再执行 schedule语句,否则提示出错,提示如下: D/AndroidRuntime( 6672): Shutting down VM W/dalvikvm( 6672): threadid=1: thread exiting with uncaught exception (group=

移动-为什么我使用下面new Timer().schedule 不会反复执行

问题描述 为什么我使用下面new Timer().schedule 不会反复执行 new Timer().schedule(new TimerTaskForListViewRolling(lv this UtilData.getData()) 10010); 为什么我使用了上面的代码不会反复执行 listview里面的数据向上移动 解决方案 你可以断点一下,那个run方法是否是只执行一次,看下这个Timer定时调度http://blog.csdn.net/xionglangs/article/d

WML教程13:计时器(timer)

教程 timer可以用来在用户不进行任何操作的一段时间后,自动执行一个任务,任何激活CARD页面的任务和用户操作都会启动timer,而任务进行时,timer就停止.每个CARD只能有一个timer,一个timer只能触发一个任务.语法如下:<timer value="value"/>,value为必选属性,用来设置定时器的定时值,最小单位为0.1秒. 相关属性: value 倒计时的点数,每一单位等于0.1秒. 示例: <?xml version="1.0&

纯PHP实现定时器任务(Timer)

定时器任务,在WEB应用比较常见,如何使用PHP实现定时器任务,大致有两种方案:1)使用Crontab命令,写一个shell脚本,在脚本中调用PHP文件,然后定期执行该脚本:2)配合使用ignore_user_abort()和set_time_limit(),使脚本脱离浏览器运行.前者是利用Linux的特性,和PHP本身没有多大关系,后者使用场景有限,且只能由一次HTTP请求触发该脚本,执行完后退出.那么我们如何使用纯PHP实现纯粹的定时器任务,且能适应认识任务业务需求?   基础知识   此程

PHP 中实现Timer功能使用pcntl和libevent

<?php function newChild($func_name) { echo "enter newChild\n"; $args = func_get_args(); unset($args[0]); $pid = pcntl_fork(); if ($pid == 0) { function_exists($func_name) and exit(call_user_func_array($func_name, $args)) or exit(-1); } else i

Community Server专题七: Job &amp; Timer

server 在CSHttpModule.cs文件中的Init方法下有这样一行: 接着在Dispose方法中还有这么一行: Job?什么是Job,在CS运行过程中有什么用途,又是如何运行的?这篇专题将叙述Job的工作流程. 你可以这里理解CS中的Job:"干一些零碎事情的钟点工". 讲解之前要先了解一个接口:IDisposable,MSDN是这样定义的:定义一种释放分配的非托管资源的方法.当托管对象不再使用时,垃圾回收器会自动释放分配给该对象的内存,不过,进行垃圾回收的时间不可预知.另