有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有导致性能问题的信号量的java Executor服务

我有一个大约10人的服务池

某些情况下,线程将需要一个具有3个许可证(连接到外部系统)的信号量

并非所有线程都需要执行此任务-因此,有时线程将在不需要外部系统连接的情况下完成

最后,线程执行器使用外部系统连接完成3个线程,还有7个线程等待获取连接

同时,还有20000多个线程等待完成任务,这些任务可能需要也可能不需要外部连接

这是对资源的浪费,因为其他20000个线程此时也可能正在执行

我已经考虑过这个问题,但找不到合适的解决方案(可能是因为我缺乏并发库方面的经验)

几点关键注意事项:

  • 执行前无法确定线程是否需要外部系统连接

  • 外部系统连接需要作为线程事务的一部分执行。换句话说,没有可预见的方法从线程中删除此工作组件并创建单独的线程池

那么,有没有一种方法可以允许7个线程执行其他任务,而3个线程使用到另一个系统的连接,并且X个线程正在等待该连接


共 (0) 个答案