//Timer(String name) 
//创建一个新计时器,其相关的线程具有指定的名称。javaapi上是这么写的,我想知道这里name的作用是不是能得到实例化后timer的句柄?比如在我的servlet有这样的代码:...
String Id = new Date().toString();
Timer timer = new Timer(Id);
...能否在另一个servlet或jsp中使用cancel方法停止指定Id的timer呢?

解决方案 »

  1.   

    给你写个例子import java.util.Timer;
    import java.util.TimerTask;public class Test extends TimerTask {
    private Timer timer = null; // 定时器 private static final long PERIOD = 1000; // 任务间隔时间

    private int i = 1;

    /**
     * 构造
     */
    public Test() {
    timer = new Timer(false);
    }

    /**
     * 启动定时任务
     */
    public void start(){
    //timer.schedule(this, 1000, Test.PERIOD); // 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行。
    timer.scheduleAtFixedRate(this, 3000, Test.PERIOD); // 安排指定的任务在指定的延迟后开始进行重复的固定速率执行。
    }

    /**
     * 结束定时任务
     */
    public void stop(){
    timer.cancel();
    } /**
     * 任务主体
     */
    public void run() {
    System.out.println(i++);
    } public static void main(String[] args) {
    Test test = new Test();
    test.start();
    }}
      

  2.   

    To mq612(五斗米) :
    谢谢
    你的例子是只有一个timer在运行吧?
    我还是有个地方不理解  
    //timer = new Timer(false);
    这里的参数false有什么作用吗?还有stop()函数如何使用才能cancel掉正在运行的特定某个timer呢?
      

  3.   

    下面这几个构造够可以Timer() 创建一个新计时器。 
    Timer(boolean isDaemon) 创建一个新计时器,可以指定其相关的线程作为守护程序运行。 
    Timer(String name) 创建一个新计时器,其相关的线程具有指定的名称。 
    Timer(String name, boolean isDaemon) 创建一个新计时器,其相关的线程具有指定的名称,并且可以指定作为守护程序运行。 timer.cancel();不就cancel掉正在运行的特定某个timer
      

  4.   

    //Timer(String name) 创建一个新计时器,其相关的线程具有指定的名称。timer.cancel();是不是根据这里的String name来cancel掉timer的呢?比如有能不能这样?
    Timer timer = new Timer(Id1);
    Timer timer = new Timer(Id2);然后怎么用timer.cancel()停止名称为Id1的timer呢?
      

  5.   

    Timer timer = new Timer(Id1);
    Timer timer = new Timer(Id2);
    不行,这样的话变量就重复了,连编译都不能通过
      

  6.   

    我在servlet里的写了一句
    Timer timer = new Timer(Id)
    每次有请求都会new一个timer我想知道能否通过Id(类似一个计数器,做自增赋值)来识别各个timer然后用cancel停止其中一个?ps.这里Timer(String name) 里name的参数我始终不明白...
      

  7.   

    你干脆把这些Timer都放到HashMap中吧,这样你随便找哪个是哪个,怎么着都乱不了
      

  8.   

    To mq612(五斗米) :能给个简单的例子么?谢谢了没有用过HashMap,不好意思哎
      

  9.   

    搜索一下吧,Hash表的文章应该很多