package com.mogujie.tt.task; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.mogujie.tt.log.Logger; import com.mogujie.tt.timer.ITimerProcessor; public class TaskTrigger implements ITimerProcessor { private ExecutorService cachedThreadPool = Executors.newFixedThreadPool(1); private TaskCenter taskCenter = new TaskCenter(); private static Logger logger = Logger.getLogger(TaskTrigger.class); private boolean isStarted = false; @Override public void process() { doTrigger(); } public void doTrigger() { while (!taskCenter.isEmpty()) { final ITask task = taskCenter.get(); if (null != task) { cachedThreadPool.execute(new Runnable() { @Override public void run() { task.doCallback(task.doTask()); } }); } else { logger.e("task is null."); } } } /** * @Description: 提交一个任务 * @param task * @return */ public boolean trigger(ITask task) { if (task.getExecuteMode() == TaskMode.masync) { MAsyncTask mtask = (MAsyncTask) task; mtask.execute(); } else if (task.getExecuteMode() == TaskMode.bgTask) { if (null != taskCenter) { taskCenter.put(task); return true; } } return false; } public boolean isStarted() { return isStarted; } }