DelayTaskQueueMgr.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package com.shkpr.service.alambizplugin.globalmgr;
  2. import com.global.base.log.LogLevelFlag;
  3. import com.global.base.log.LogPrintMgr;
  4. import com.global.base.taskqueue.TaskQueueData;
  5. import com.shkpr.service.alambizplugin.constants.LogFlagBusiType;
  6. import com.shkpr.service.alambizplugin.constants.TaskQueueDataTypeEx;
  7. import com.shkpr.service.alambizplugin.globalcache.GlobalData;
  8. import com.shkpr.service.alambizplugin.queues.DelayCommTaskQueueHandlerPool;
  9. import javax.annotation.PostConstruct;
  10. import javax.annotation.PreDestroy;
  11. public class DelayTaskQueueMgr {
  12. private String mStrClassName;
  13. private static volatile DelayTaskQueueMgr msInstance = null;
  14. private DelayCommTaskQueueHandlerPool mCommTaskQueuePool = null;
  15. private DelayTaskQueueMgr() {mStrClassName = this.getClass().getSimpleName();
  16. }
  17. public static DelayTaskQueueMgr getInstance(){
  18. if (msInstance == null){
  19. synchronized (DelayTaskQueueMgr.class){
  20. if (msInstance == null){
  21. msInstance = new DelayTaskQueueMgr();
  22. }
  23. }
  24. }
  25. return msInstance;
  26. }
  27. private void init(){
  28. int nPooSize = GlobalData.getInstance().getCpuCores()/2;
  29. mCommTaskQueuePool = new DelayCommTaskQueueHandlerPool(nPooSize<=0?1:nPooSize);
  30. mCommTaskQueuePool.init();
  31. LogPrintMgr.getInstance().printLogMsg(LogLevelFlag.LOG_INFO, LogFlagBusiType.BUSI_INIT.toStrValue(), mStrClassName
  32. ,String.format("init()..."));
  33. }
  34. @PostConstruct
  35. public void afterPropertiesSet() throws Exception{
  36. init();
  37. }
  38. @PreDestroy
  39. public void destroy() throws Exception{
  40. if (mCommTaskQueuePool != null)
  41. mCommTaskQueuePool.stopAllQueueHandler(true);
  42. }
  43. public <T> boolean postTaskData(int type, T data, long expiredMs){
  44. if (data != null
  45. && type > TaskQueueDataTypeEx.DELAY_TASK_BEGIN
  46. && type < TaskQueueDataTypeEx.DELAY_TASK_END
  47. && mCommTaskQueuePool != null)
  48. return mCommTaskQueuePool.postTaskData(type, data, expiredMs);
  49. return false;
  50. }
  51. public boolean postTaskData(TaskQueueData taskData, long expiredMs){
  52. if (taskData != null
  53. && taskData.getType() > TaskQueueDataTypeEx.DELAY_TASK_BEGIN
  54. && taskData.getType() < TaskQueueDataTypeEx.DELAY_TASK_END
  55. && mCommTaskQueuePool != null)
  56. return mCommTaskQueuePool.postTaskData(taskData, expiredMs);
  57. return false;
  58. }
  59. public void stopAllTaskQueue(){
  60. if (mCommTaskQueuePool != null)
  61. mCommTaskQueuePool.stopAllQueueHandler(true);
  62. }
  63. public void timePerSecondNow(){
  64. if (mCommTaskQueuePool != null){
  65. mCommTaskQueuePool.timePerSecondNow();
  66. }
  67. }
  68. }