diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java index cf07a55a8f..68aaa5b114 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java @@ -59,13 +59,14 @@ public IJobHandler getHandler() { * @return */ public ReturnT pushTriggerQueue(TriggerParam triggerParam) { - // avoid repeat - if (triggerLogIdSet.contains(triggerParam.getLogId())) { - logger.info(">>>>>>>>>>> repeate trigger job, logId:{}", triggerParam.getLogId()); - return new ReturnT(ReturnT.FAIL_CODE, "repeate trigger job, logId:" + triggerParam.getLogId()); + // avoid repeat + synchronized (this){ + if (triggerLogIdSet.contains(triggerParam.getLogId())) { + logger.info(">>>>>>>>>>> repeate trigger job, logId:{}", triggerParam.getLogId()); + return new ReturnT(ReturnT.FAIL_CODE, "repeate trigger job, logId:" + triggerParam.getLogId()); + } + triggerLogIdSet.add(triggerParam.getLogId()); } - - triggerLogIdSet.add(triggerParam.getLogId()); triggerQueue.add(triggerParam); return ReturnT.SUCCESS; }