对状态的并发访问,指示可用Web服务令牌的数量

时间:2014-04-20 17:39:36

标签: java web-services concurrency

我正在编写一个用于管理对服务提供商的访问的库,无论它们是Web服务,文件系统资源......在某些情况下,提供商将要求预先购买一定数量的信用,例如为短信服务购买100个积分。

我打算将每个服务提供商的剩余信用额计数存储为共享状态,我会同步,但是我担心我必须挂在锁上的时间,即为了确保只有在请求发生时才更新计数我必须同步acccess:

// Concrete class provides implementation
public abstract Result provide();

public Result provideIfInCredit() {
  Result result = null;
  synchronized(this) {
    if(remainingCredits > 0) {
      result = provide();
      remainingCredits--;
    }
  }
  return result;
}

是否有一个我忽略的策略允许对服务提供者的并发请求,其中对provide()的调用不是锁定的一部分?

0 个答案:

没有答案