java.util.concurrent.ThreadLocalRandom 인스턴스를 보고합니다.
ThreadLocalRandom은 스레드 안전한 클래스가 아니기 때문에 스레드 간에 공유될 수 없습니다.
이 검사는 메서드 인수로 사용된 필드에 대입되거나 지역 변수에 대입되어 익명 클래스 또는 중첩된 클래스에서 사용되는 인스턴스를 보고합니다. 이러한 인스턴스는 스레드 간에 공유될 수 있습니다.
ThreadLocalRandom은 보통 ThreadLocalRandom.current().nextInt(...)
(또는 nextDouble(...) etc.)와 같이 사용됩니다.
모두 이러한 형식으로 사용될 경우, 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 인스턴스를 인수로 전달하기에 안전한 메서드를 나열하려면 옵션을 사용하세요.
메서드 이름으로 정규 표현식을 사용할 수 있습니다.