为什么选择 Google Guava Striped
类不包含作为参数 Supplier<Lock>
的工厂方法( Supplier<Semaphore>
, Supplier<ReadWriteLock>
) 实例?
例如,我想使用 CycleDetectingLockFactory 来创建锁,但我不能:
final CycleDetectingLockFactory lockFactory = CycleDetectingLockFactory.newInstance( CycleDetectingLockFactory.Policies.THROW );
//...
Striped<Lock> cycleDetectingLocks = Striped.lazyWeakLock( 64, new Supplier<Lock>()
{
public Lock get()
{
return lockFactory.newReentrantLock( "" );
}
}; );
最佳答案
它目前有一个带有该签名的私有(private)构造函数。也许他们会在未来的版本中将其公开(或提供工厂方法)。我想不出不这样做的理由。同时,您可能可以通过创建 Stripped 子类并直接实例化它来实现相同的目标。看起来每个现有的具体 Striped 实现都只有大约 20 行。 (大部分逻辑都在基类中)
关于java - Guava 条纹创作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18592129/