番石榴条纹创作

时间:2013-09-03 12:17:30

标签: java guava

为什么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( "" );
        }
    }; );

1 个答案:

答案 0 :(得分:0)

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