android/guava/src/com/google/common/util/concurrent/Striped.java
public static Striped<Semaphore> semaphore(int stripes, final int permits) {
    return custom(
        stripes,
        new Supplier<Semaphore>() {
          @Override
          public Semaphore get() {
            return new PaddedSemaphore(permits);
          }
        });
  }
public static Striped<Semaphore> semaphore(int stripes, final int permits) {
    return custom(
        stripes,
        new Supplier<Semaphore>() {
          @Override
          public Semaphore get() {
            return new PaddedSemaphore(permits);
          }
        });
  }
Creates a {@code Striped<Semaphore>} with eagerly initialized, strongly referenced semaphores,
with the specified number of permits.

@param stripes the minimum number of stripes (semaphores) required
@param permits the number of permits in each semaphore
@return a new {@code Striped<Semaphore>}