报告可能在线程之间共享的 java.util.concurrent.ThreadLocalRandom 实例。

ThreadLocalRandom 不应在线程之间共享,因为不具备线程安全。 该检查报告分配给用作方法参数的字段,或分配给局部变量并在匿名类或嵌套类中使用的实例,因为它们可能在线程之间共享。

ThreadLocalRandom 的用法通常应类似于ThreadLocalRandom.current().nextInt(...) (或 nextDouble(...) 等)。 所有用法都采取这种形式时,ThreadLocalRandom 实例就不会被多个线程误用。

示例:


    class Main {
      void printRandomNumbersAsync() {
        ThreadLocalRandom random = ThreadLocalRandom.current();
        CompletableFuture.supplyAsync(() -> generateNumbers(random))
          .thenAccept(numbers -> System.out.println(Arrays.toString(numbers)));
      }

      private int[] generateNumbers(Random random) {
        return random.ints(1000, 0, 100).toArray();
      }
    }
  

使用这些选项列出可以作为参数传递给 ThreadLocalRandom 实例的方法。 方法名称可以使用正则表达式。