关于java:java-实现满足一定数量超过一定时间后才做任务的队列

44次阅读

共计 701 个字符,预计需要花费 2 分钟才能阅读完成。

@Slf4j
public class EventDelayQueueService {private final List<TaskInfo> items = Collections.synchronizedList(new ArrayList<>());
    private final int maxCapacity = 500;
    private final ScheduledExecutorService scheduled = Executors.newScheduledThreadPool(1);;
    private final MDCThreadPoolExecutor executor = Executors.newFixedThreadPool(5);;
    private final AtomicInteger count = new AtomicInteger(0);

    @Override
    public void afterPropertiesSet() throws Exception {log.info("start the EventDelayQueueService .");
        scheduled.scheduleAtFixedRate(() -> {if (items.size() > maxCapacity) {asyncAction();
                return;
            }
            if (count.incrementAndGet() > 10) {asyncAction();
            }
        },10,200, TimeUnit.MILLISECONDS);
    }

    private void asyncAction() {// TODO}


    public void add(TaskInfo info) {items.add(info);
    }
}

正文完
 0