想知道如何不使用信号量限制连接(或任何内容)。
所以你可能会想,“这听起来很愚蠢。”但是,它简化了我的代码,因为它让我可以统一处理有限和无限的情况。
注意我不是在寻找关于如何编写类似
的建议if(limited) {
semaphore.acquire();
}
我可以提出几种方法来使用if语句进行分叉。
更具体地说,我正在寻找Apache Commons或Java解决方案。这只是一个简单的情况,我可以编写自己的简单类来解决它,但是当有广泛可用的实用程序解决方案时,我更喜欢使用它们。
答案 0 :(得分:1)
鉴于Semaphore是一个类,而不是一个接口,你将被迫在逻辑中使用某种形式的分支。为了避免在代码周围进行“if(flag)”检查,您可以创建一个在您的应用程序中使用的接口,其中包括Semaphore类的获取和释放语义。从那时起,提供两个实现,一个基本上是无操作,不提供任何保护,另一个类委托给java.util.concurrent.Semaphore - 从这一点你可以使用依赖注入来确定要使用哪种实现方式。
同样,分支不可避免地要存在于某个地方,这只会将其移出业务逻辑。