Правильно ли трентокалрандом для использования в VirtualThread в Java LoomJAVA

Программисты JAVA общаются здесь
Anonymous
Правильно ли трентокалрандом для использования в VirtualThread в Java Loom

Сообщение Anonymous »

В видео [1:23] Хосе Паумард говорит о том, почему использование Threadlocal - это зло; Особенно, если код создает бесчисленные (виртуальные) потоки.
< /p>

Можем ли мы сказать то же самое для Threadlocalrandom?
< /li>
или это просто сходство, что мы должны придерживаться Threadlocalrandom?

Дополнительные ноты ...

Согласно простым тестам, как случайные, так и тренокалромные работы: < /li>
< /ul>

public static void threadLocalRandomTest() {
enum TestType {
useNewThreadLocalRandom, useNewRandom,
ReUseThreadLocal, ReUseRandom,
ReUseGlobalRandom,
customThreadLocalRandom, customRandom
}
var testType = TestType.useNewThreadLocalRandom;
var rg = new Random();
IntStream.range(0, 1_000_000).forEach(i -> {
if (testType == TestType.useNewThreadLocalRandom) {//63mb->60mb
IntStream.range(0, 100).forEach(j -> {
ThreadLocalRandom.current().nextFloat(1);
});
}
if (testType == TestType.useNewRandom) {//326mb->323mb
IntStream.range(0, 100).forEach(j -> {
new Random().nextFloat(1);
});
}
if (testType == TestType.ReUseThreadLocal) {//65mb->61mb
var r = ThreadLocalRandom.current();
IntStream.range(0, 100).forEach(j -> {
r.nextFloat(1);
});
}
if (testType == TestType.ReUseRandom) {//111mb->108mb
var r = new Random();
IntStream.range(0, 100).forEach(j -> {
r.nextFloat(1);
});
}
if (testType == TestType.ReUseGlobalRandom) {//64mb->61mb
IntStream.range(0, 100).forEach(j -> {
rg.nextFloat(1);
});
}
});
}


Подробнее здесь: https://stackoverflow.com/questions/739 ... -java-loom

Вернуться в «JAVA»