static <L> Striped<L> custom(int stripes, Supplier<L> supplier) {
    return new CompactStriped<>(stripes, supplier);
  }
static <L> Striped<L> custom(int stripes, Supplier<L> supplier) {
    return new CompactStriped<>(stripes, supplier);
  }
static < L > Striped < L > custom ( int stripes , Supplier < L > supplier ) { return new CompactStriped <> ( stripes , supplier ) ; }
Creates a {@code Striped<L>} with eagerly initialized, strongly referenced locks. Every lock is
obtained from the passed supplier.

@param stripes the minimum number of stripes (locks) required
@param supplier a {@code Supplier<L>} object to obtain locks from
@return a new {@code Striped<L>}
Creates a { @code Striped<L > } with eagerly initialized strongly referenced locks . Every lock is obtained from the passed supplier .