Java无限信号量

时间:2013-03-01 01:16:17

标签: java semaphore

想知道如何使用信号量限制连接(或任何内容)。

所以你可能会想,“这听起来很愚蠢。”但是,它简化了我的代码,因为它让我可以统一处理有限和无限的情况。

注意我不是在寻找关于如何编写类似

的建议
if(limited) {
    semaphore.acquire();
}

我可以提出几种方法来使用if语句进行分叉。

更具体地说,我正在寻找Apache Commons或Java解决方案。这只是一个简单的情况,我可以编写自己的简单类来解决它,但是当有广泛可用的实用程序解决方案时,我更喜欢使用它们。

1 个答案:

答案 0 :(得分:1)

鉴于Semaphore是一个类,而不是一个接口,你将被迫在逻辑中使用某种形式的分支。为了避免在代码周围进行“if(flag)”检查,您可以创建一个在您的应用程序中使用的接口,其中包括Semaphore类的获取和释放语义。从那时起,提供两个实现,一个基本上是无操作,不提供任何保护,另一个类委托给java.util.concurrent.Semaphore - 从这一点你可以使用依赖注入来确定要使用哪种实现方式。

同样,分支不可避免地要存在于某个地方,这只会将其移出业务逻辑。