android/guava/src/com/google/common/util/concurrent/Striped.java
public static Striped<Lock> lazyWeakLock(int stripes) {
    return lazy(
        stripes,
        new Supplier<Lock>() {
          @Override
          public Lock get() {
            return new ReentrantLock(false);
          }
        });
  }
public static Striped<Lock> lazyWeakLock(int stripes) {
    return lazy(
        stripes,
        new Supplier<Lock>() {
          @Override
          public Lock get() {
            return new ReentrantLock(false);
          }
        });
  }
Creates a {@code Striped<Lock>} with lazily initialized, weakly referenced locks. Every lock is
reentrant.

@param stripes the minimum number of stripes (locks) required
@return a new {@code Striped<Lock>}