package ALBasicServer.ALServerAsynTask; import java.util.ArrayList; import ALBasicServer.ALTask._AALAsynCallAndBackTask; import ALBasicServer.ALTask._IALAsynCallBackTask; import ALBasicServer.ALTask._IALAsynCallTask; import ALBasicServer.ALTask._IALAsynRunnableTask; import ALBasicServer.ALThread.ALThreadManager; /*********************** * 异步任务处理的管理对象 * * @author alzq.z * @email zhuangfan@vip.163.com * @time Feb 19, 2013 4:09:59 PM */ public class ALAsynTaskManager { private static ALAsynTaskManager g_instance = new ALAsynTaskManager(); public static ALAsynTaskManager getInstance() { return g_instance; } /** 已经排入计划的异步任务处理对象 */ private ArrayList<ALAsynTaskThread> _m_lAsynTaskThreadList; private int maxIdx; /** 系统异步任务处理线程对象 */ private ALAsynTaskThread _m_tSystemAsynTaskThread; public ALAsynTaskManager() { _m_lAsynTaskThreadList = null; maxIdx = -1; _m_tSystemAsynTaskThread = null; } /***************** * 初始化所有的异步任务处理线程,带入处理线程数量 * * @author alzq.z * @time Feb 20, 2013 10:51:29 PM */ public void init(int _asynTaskThreadCount) { //初始化系统异步处理线程 _m_tSystemAsynTaskThread = ALThreadManager.getInstance().createAsynTaskThread(); //最少一个异步线程 if(_asynTaskThreadCount <= 0) _asynTaskThreadCount = 1; _m_lAsynTaskThreadList = new ArrayList<ALAsynTaskThread>(_asynTaskThreadCount); for(int i = 0; i < _asynTaskThreadCount; i++) { //逐个创建线程 _m_lAsynTaskThreadList.add(ALThreadManager.getInstance().createAsynTaskThread()); } maxIdx = _asynTaskThreadCount - 1; } /*************** * 为指定序号的异步处理线程加入回调类型异步任务处理 * * @author alzq.z * @time Feb 19, 2013 4:09:01 PM */ public <T> void regTask(int _threadIdx, _IALAsynCallTask<T> _callObj, _IALAsynCallBackTask<T> _callBackObj) { if(_threadIdx > maxIdx || _threadIdx < 0) _threadIdx = 0; //注册任务 _m_lAsynTaskThreadList.get(_threadIdx)._getTaskManager().regTask(_callObj, _callBackObj); } /*************** * 为指定序号的异步处理线程加入回调类型异步任务处理 * * @author alzq.z * @time Feb 19, 2013 4:09:01 PM */ public <T> void regTask(int _threadIdx, _AALAsynCallAndBackTask<T> _task) { if(_threadIdx > maxIdx || _threadIdx < 0) _threadIdx = 0; //注册任务 _m_lAsynTaskThreadList.get(_threadIdx)._getTaskManager().regTask(_task, _task); } /***************** * 为指定序号的异步处理线程加入执行类异步任务处理 * * @author alzq.z * @time Feb 19, 2013 4:09:29 PM */ public void regTask(int _threadIdx, _IALAsynRunnableTask _runTask) { if(_threadIdx > maxIdx || _threadIdx < 0) _threadIdx = 0; //注册任务 _m_lAsynTaskThreadList.get(_threadIdx)._getTaskManager().regTask(_runTask); } /*************** * 为系统异步处理线程加入回调类型异步任务处理 * * @author alzq.z * @time Feb 19, 2013 4:09:01 PM */ public <T> void regSysTask(_IALAsynCallTask<T> _callObj, _IALAsynCallBackTask<T> _callBackObj) { //注册任务 _m_tSystemAsynTaskThread._getTaskManager().regTask(_callObj, _callBackObj); } /***************** * 为系统异步处理线程加入执行类异步任务处理 * * @author alzq.z * @time Feb 19, 2013 4:09:29 PM */ public void regSysTask(_IALAsynRunnableTask _runTask) { //注册任务 _m_tSystemAsynTaskThread._getTaskManager().regTask(_runTask); } }