控制用户同时执行任务数怎么实现

需求是实现 控制每个用户任务的同时执行数。

比如a用户提交了100个任务,配置只能同时执行10个任务,那么就同时执行10个任务,其余任务等待中;
b用户也提交了100个任务,配置只能同时执行50个,那么就同时执行50个任务,其余任务等待中;
有其他用户任务同理。

初步思路是每个用户对应一个队列 + 一个消费者线程去轮询,消费者线程判断当前用户正在执行的任务数量是否大于同时执行数,如果不大于就放到一个线程池执行任务。
但问题就是一个用户就有一个队列+一个消费者线程+一个执行任务的线程池,就怕很多人用的时候服务器创建的线程太多了扛不住。。

在此请教各位有无好办法。

为什么要每个用户有一个队列,消息来了统一进队列,然后就执行呗,反正是异步的服务,又不是网页,要求马上给客户端反馈结果

1.首先可以根据服务器去选择合适最大线程数,核心线程数。当线程池中的线程不够的时候,全都会进线程池队列。并不会出现你那个创建线程太多扛不住。你可以写个线程拒绝策略,或者用线程池自带的几种拒绝策略。
2.你的线程用线程池去创建,然后每个用户线程绑定一个任务队列,当线程池有空闲线程了,就会去执行消费线程。

每次执行的时候创建一个线程池,线程池的数量取决于配置的数量,用好shutdown,应该不存在服务器创建的线程太多了扛不住的情况吧,反正我没遇到过,楼主可以试试