将计时器与表关联起来

时间:2012-07-03 07:30:28

标签: java timer

我是计时器的新手并且对它们不太了解。我的问题是我动态创建2个表,并且当表创建一个10分钟的计时器时,它被分配给它。即用户必须在10分钟内填写该表,否则该表将被销毁。我尝试制作一个小型演示,其中我打印的东西 代码是:

final Timer mytimers = new Timer(); 
Timer mytimers1 = new Timer();
 mytimers1 = new Timer();
final long delay1 = 5*1000; 
// mytimers = new Timer();
 mytimers.schedule(new TimerTask() {
Long current1 = System.currentTimeMillis();
 long check = current1;

      @Override
      public void run() {
        Long current = System.currentTimeMillis();
        System.out.println(current);
        System.out.println("\n");

       if((current1 + delay1)<current)

       {        

       System.out.println("mytimmer is about to stop");

       mytimers.cancel();


       }


      }

    }, 100, 1000);





 mytimers1.schedule(new TimerTask() {

      @Override
      public void run() {
        Long current = System.currentTimeMillis();
        System.out.println("in" + current);


      }
    }, delay1, 1000);

    }

但是当我尝试实现这个int他最后的项目它不起作用,因为我必须在运行中使任何变量最终,因此它的值不能改变! 请让我该怎么做!!谢谢

2 个答案:

答案 0 :(得分:0)

  

我必须在运行中使任何变量成为最终,因此其值无法更改!

将这些变量转换为成员变量或将这些值封装在适当的类中,实例化该类并将该对象的引用提供给计时器任务。

即使引用是最终的,计时器任务仍然可以执行myTableController.destroyTable()之类的操作。

答案 1 :(得分:0)

这样做:

class YourClass{
Timer mytimers = new Timer(); 
Timer mytimers1 = new Timer();
long delay1 = 5*1000; 

mytimers.schedule(new TimerTask() {
Long current1 = System.currentTimeMillis();
long check = current1;
      @Override
      public void run() {
        Long current = System.currentTimeMillis();
        System.out.println(current);
        System.out.println("\n");
       if((current1 + delay1)<current) {
       System.out.println("mytimmer is about to stop");
       mytimers.cancel();
       }
    }
}, 100, 1000);

mytimers1.schedule(new TimerTask() {

      @Override
      public void run() {
        Long current = System.currentTimeMillis();
        System.out.println("in" + current);
      }
    }, delay1, 1000);
    }

在你的情况下你已经创建了匿名'具体'类即TimerTask,并且你正在尝试访问不在其范围内的变量。

因此,如果您尝试访问的变量是本地(方法)变量,那么它们应该声明为最终,或者反过来将这些变量声明为即时(会员)变量就是我上面所做的。