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

@Slf4j
public class EventDelayQueueService {

    private final List 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);
    }
}

你可能感兴趣的:(javaqueue)