Правильно ли трентокалрандом для использования в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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