1

为什么 Google GuavaStriped类不包含以Supplier<Lock>( Supplier<Semaphore>, Supplier<ReadWriteLock>) intsance 为参数的工厂方法?

例如,我想使用 CycleDetectingLockFactory 创建锁,但我不能:

final CycleDetectingLockFactory lockFactory = CycleDetectingLockFactory.newInstance( CycleDetectingLockFactory.Policies.THROW );    
//...
Striped<Lock> cycleDetectingLocks = Striped.lazyWeakLock( 64, new Supplier<Lock>()
{
        public Lock get()
        {
            return lockFactory.newReentrantLock( "" );
        }
    }; );

4

1 回答 1

0

它目前有一个只有该签名的私有构造函数。也许他们会在未来的版本中公开它(或提供工厂方法)。我想不出为什么不这样做的原因。同时,您可以通过创建一个剥离子类并直接实例化它来实现相同的目标。看起来每个现有的具体 Striped 实现只有大约 20 行。(大多数逻辑在基类中)

于 2013-09-03T13:46:56.353 回答