Modify the code-owners plugin to use the new Accounts#randomNIds method

For storage systems that optimizes Accounts#randomNIds implementation,
this should lead to performance improvements.

Change-Id: Ia21b61f8527a8462734e477fe288f3d479db5f51
Release-Notes: skip
Google-Bug-Id: b/299605283
diff --git a/java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java b/java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java
index bc202da..dba335b 100644
--- a/java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java
+++ b/java/com/google/gerrit/plugins/codeowners/restapi/AbstractGetCodeOwnersForPath.java
@@ -73,6 +73,7 @@
 import java.util.Optional;
 import java.util.Random;
 import java.util.Set;
+import java.util.concurrent.ThreadLocalRandom;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Stream;
 import org.kohsuke.args4j.Option;
@@ -537,7 +538,8 @@
   private static <T> Stream<T> randomizeOrder(Optional<Long> seed, Set<T> set) {
     List<T> randomlyOrderedCodeOwners = new ArrayList<>(set);
     Collections.shuffle(
-        randomlyOrderedCodeOwners, seed.isPresent() ? new Random(seed.get()) : new Random());
+        randomlyOrderedCodeOwners,
+        seed.isPresent() ? new Random(seed.get()) : ThreadLocalRandom.current());
     return randomlyOrderedCodeOwners.stream();
   }
 
@@ -616,6 +618,9 @@
    * <p>No visibility check is performed.
    */
   private Stream<Account.Id> getRandomUsers(int limit) throws IOException {
-    return randomizeOrder(seed, accounts.allIds()).limit(limit);
+    return accounts
+        .randomNIds(
+            limit, seed.isPresent() ? seed.get() : ThreadLocalRandom.current().nextLong())
+        .stream();
   }
 }