Java中启动同一个线程,在时间窗口内最多启动指定个数

在Java中,如果你想要启动同一个线程,但是限制在一段时间内最多只能启动指定数目的线程,你可以使用ScheduledExecutorService来周期性地检查是否有线程需要启动,并通过一个计数器来控制最大线程数。
实例如下:

	private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
    private final AtomicInteger activeTasks = new AtomicInteger(0);
    private final int maxTasks;

	                    scheduler.schedule(() -> {
                        if (activeTasks.get() < 3) {
                            int previousCount = activeTasks.getAndIncrement();
                            if (previousCount < 3) {
                                new Thread(downloadTask).start();
                            }
                        } else {
                            sout("已超过指定线程个数");
                        }
                    }, 10, TimeUnit.SECONDS);

	Runnable task = () -> {
            // 你的任务逻辑
            System.out.println("Task started: " + Thread.cu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值