带有导致性能问题的信号量的java Executor服务
我有一个大约10人的服务池
在某些情况下,线程将需要一个具有3个许可证(连接到外部系统)的信号量
并非所有线程都需要执行此任务-因此,有时线程将在不需要外部系统连接的情况下完成
最后,线程执行器使用外部系统连接完成3个线程,还有7个线程等待获取连接
同时,还有20000多个线程等待完成任务,这些任务可能需要也可能不需要外部连接
这是对资源的浪费,因为其他20000个线程此时也可能正在执行
我已经考虑过这个问题,但找不到合适的解决方案(可能是因为我缺乏并发库方面的经验)
几点关键注意事项:
执行前无法确定线程是否需要外部系统连接
外部系统连接需要作为线程事务的一部分执行。换句话说,没有可预见的方法从线程中删除此工作组件并创建单独的线程池
那么,有没有一种方法可以允许7个线程执行其他任务,而3个线程使用到另一个系统的连接,并且X个线程正在等待该连接
共 (0) 个答案