package demo2;
import java.util.HashMap;
import java.util.Map;
import java.util.Observable;
import java.util.Observer;
public abstract class Task
implements Runnable, Observer,TaskAction
{
//设置最大任务数
public static void setThreadMaxNum(int num) {
TaskQueue.ThreadMaxNum = num<1?1:num>100?100:num;
}
public static enum TaskPriority {
max, min;
}
/** 单例 可以提高性能 */
protected final static Exception withoutException = new Exception(
"The state is without");
// 名字映射
private static HashMap nameTasks;
public static HashMap getNameTask() {
if (nameTasks == null) {
nameTasks = new HashMap();
}
return nameTasks;
}
public Task
setSingletonName(String singletonName) {
this.singletonName = singletonName;
return this;
}
public String getSingletonName() {
return singletonName;
}
public interface OnStartListen {
void onStart(Task t);
}
public interface OnProgressListen {
void onProgress(Task task, int progress, Object data);
}
public static interface OnFinishListen
{
void onFinish(Task
task, R data);
}
public interface OnSystemStartListen {
void onSystemStart(Task task);
}
public interface OnSystemFinishListen {
void OnSystemFinish(Task t, Object data);
}
/** 请求参数 */
protected P parameter;
/** 任务开始监听 */
protected OnStartListen onStartListen;
/** 任务进度监听 */
protected OnProgressListen onProgressListen;
/** 任务完成监听 */
protected OnFinishListen
onFinishListen;
/** 任务在队列中完成 监听 */
protected OnSystemStartListen onSystemStartListen;
/** 任务在队列中开始 监听 */
protected OnSys