package com.cwa.log.task;
import java.util.concurrent.ScheduledFuture;
import org.apache.log4j.Logger;
/**
* 计划任务回调的Handler
*
*/
public class TaskCallbackHandler {
private static final Logger logger=Logger.getLogger(TaskCallbackHandler.class);
/** 对应的任务对象 **/
private Task task;
/** 一个延迟的,计划任务异步执行的结果 **/
private ScheduledFuture<?> future;
/** 所属的Service */
private AbstractTaskService service;
public TaskCallbackHandler(Task t,ScheduledFuture<?> f,AbstractTaskService s){
this.task=t;
this.future=f;
this.service=s;
if (logger.isDebugEnabled())
logger.debug("task="+task);
}
/**
* 正常退出,如果任务在运行,等待任务运行结束退出。
*/
public void cancel(){
if (logger.isDebugEnabled())
logger.debug("正常取消计划任务."+task);
service.removeHandler(this);
future.cancel(false);
}
/**
* 强制退出任务,如果任务在运行,也强制退出。
*/
public void cancelInRunning(){
if (logger.isDebugEnabled())
logger.debug("强制取消计划任务."+task);
service.removeHandler(this);
future.cancel(true);
}
public void setFuture(ScheduledFuture<?> future) {
this.future = future;
}
}