为什么Google Guava Striped
类不包含作为参数Supplier<Lock>
(Supplier<Semaphore>
,Supplier<ReadWriteLock>
)intsance的工厂方法?
例如,我想使用CycleDetectingLockFactory来创建Lock,但我不能:
final CycleDetectingLockFactory lockFactory = CycleDetectingLockFactory.newInstance( CycleDetectingLockFactory.Policies.THROW );
//...
Striped<Lock> cycleDetectingLocks = Striped.lazyWeakLock( 64, new Supplier<Lock>()
{
public Lock get()
{
return lockFactory.newReentrantLock( "" );
}
}; );
答案 0 :(得分:0)
它目前有一个私有构造函数,只有该签名。也许他们会在未来版本中公开(或提供工厂方法)。我想不出有什么原因。同时你可以通过创建一个Stripped子类并直接实例化它来实现同样的目的。看起来每个现有的混凝土Striped实现只有大约20行。 (大多数逻辑都在基类中)