mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
34 lines
1.4 KiB
HTML
34 lines
1.4 KiB
HTML
<html>
|
|
<body>
|
|
Reports <code>java.util.concurrent.ThreadLocalRandom</code> instances which might be shared between threads.
|
|
<p>
|
|
A <code>ThreadLocalRandom</code> should not be shared between threads because that is not thread-safe.
|
|
The inspection reports instances that are assigned to a field used as a method argument,
|
|
or assigned to a local variable and used in anonymous or nested classes as they might get shared between threads.
|
|
</p>
|
|
<p>
|
|
Usages of <code>ThreadLocalRandom</code> should typically look like <code>ThreadLocalRandom.current().nextInt(...)</code>
|
|
(or <code>nextDouble(...)</code> etc.).
|
|
When all usages are in this form, <code>ThreadLocalRandom</code> instances cannot be used accidentally by multiple threads.
|
|
</p>
|
|
<p><b>Example:</b></p>
|
|
<pre><code>
|
|
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();
|
|
}
|
|
}
|
|
</code></pre>
|
|
<!-- tooltip end -->
|
|
<p>
|
|
Use the options to list methods that are safe to be passed to <code>ThreadLocalRandom</code> instances as an argument.
|
|
It's possible to use regular expressions for method names.
|
|
</p>
|
|
</body>
|
|
</html> |