java怎样结束一个定时器,Java结束定时器任务

有的定时器任务是随系统的开启而保持常开的,有的定时器任务就是任务处理完毕就需要回收以释放系统资源,那么如何结束定时器任务?

定时器任务是不能采用for循环或者while循环来结束的,采用私有变量也不合适,因此搜到了这种方法:

可以封装一个FlagBean类用来控制,在定时器构造函数中传入这个FlagBean的实例,在定时器内部进行其他控制,总而言之就是在外部进行控制,参见下面的代码

定时器控制类:

package com.feng.control;

/**

* 定时器控制类

*/

public class ControlFlag {

private int count;

private boolean flag;

public int getCount() {

return count;

}

public void setCount(int count) {

this.count = count;

}

public boolean isFlag() {

return flag;

}

public void setFlag(boolean flag) {

this.flag = flag;

}

}

下面的方法用来模拟定时器任务

package com.feng.operator;

import com.feng.control.ControlFlag;

/**

* 模拟定时器任务

*/

public class Operator {

private ControlFlag control;

public Operator(ControlFlag controlFlag) {

this.control = controlFlag;

}

public void testOperator(int i){

System.out.println("输出了: " + i );

this.control.setCount(this.control.getCount() + 1) ;

}

public ControlFlag getControl() {

return control;

}

public void setControl(ControlFlag control) {

this.control = control;

}

}

测试类

package com.feng.test;

import com.feng.control.ControlFlag;

import com.feng.operator.Operator;

public class TestOutSideControl {

public static void main(String[] args) {

ControlFlag controlFlag = new ControlFlag();

controlFlag.setFlag(true);

controlFlag.setCount(0);

Operator op = new Operator(controlFlag);

while (controlFlag.isFlag()) {

if (controlFlag.getCount() > 20) {

controlFlag.setFlag(false);

continue;

}

op.testOperator(20);

}

}

} 这种结束定时器任务的方法个人认为是比较好的,希望大家提出不足之处,O(∩_∩)O谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值