@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);
    }
}

lanbo
1 声望0 粉丝

不积硅步,无以至千里