170 похожих чатов

Кто-Нибудь видел, какая изначальная причина была при отказе от ThreadLocal

в лум? Начал тут разбирать как устроен ScopedValues, добравлся вот до этого(https://github.com/openjdk/jdk/blob/dc4bc4f0844b768e83406f44f2a9ee50686b1d9d/src/java.base/share/classes/java/lang/Thread.java#L302) и чет немножко не понял, они так же лежат в поле треда, Бейтман на последнем JVMLS немного упоминает, что отказ от TL благотворно влияет на некоторые GC(хотя мне стало не понятно, почему). И тут становится не понятно, а почему линкед лист(которым по-сути и является Snapshot в ScopedValues) лучше, чем хешмапа в том же поле треда. По mail-листам тоже ничего особо не нашел. Особенно беспокоит, что альтернативы для пула объектов, которые раньше были в TL, работают хуже, глядя на тот jackson, который добавил BufferRecyclerPool(для loom-friendly).

29 ответов

37 просмотров

Дорого копировать между огромным количеством тредов. Плюс модификация переменных еще больше это усугубляет с точки зрения контекст свича и блокировок

Ilya-Starchenko Автор вопроса
Max
Дорого копировать между огромным количеством тредо...

Посмотрите на то, как сделаны ScopedValues. Это линкед-лист в поле потока.

Ilya Starchenko
Посмотрите на то, как сделаны ScopedValues. Это ли...

Он immutable, по этому просто шарится как общий ресурс

Ilya-Starchenko Автор вопроса

So what? Иммутабельная мапа. Это ничего не объясняет.

Ilya Starchenko
So what? Иммутабельная мапа. Это ничего не объясня...

Там очень ограниченный скоуп это легко контролить и прибирать

Ilya-Starchenko Автор вопроса
Max
Там очень ограниченный скоуп это легко контролить ...

Мапа TL и объект на SV лежат буквально в одном месте. Легко контролить и прибирать - это явно не техническое обоснование для серьезной миграции, которая не покрывает большинство проблем.

Ilya Starchenko
Мапа TL и объект на SV лежат буквально в одном мес...

О каких проблемах ты говоришь? Дай контекста хоть

Ilya-Starchenko Автор вопроса
Max
О каких проблемах ты говоришь? Дай контекста хоть

Ну проблему я в изначальном сообщении подсвечивал, пулы объектов, тот же джексон много чего кэширует, как и все http-сервера. Но мне больше интересна изначальная мотивация заменить TL на сущность, которая мало чем отличается от TL.

Ilya Starchenko
Ну проблему я в изначальном сообщении подсвечивал,...

Никто не запрещает тебе юзать tl, просто на вирт тредах на большом количестве потоков это будет мягко говоря не эффективно. SV тоже поддерживают кеширования и прочие техники при надобности. См: java.lang.ScopedValue.cacheSize

Ilya-Starchenko Автор вопроса
Max
Никто не запрещает тебе юзать tl, просто на вирт т...

Давай еще раз, каким образом TL будет менее эффективен, когда SV и TL это два поля, которые лежат в поле потока? Не предназначен SV для буферов, это примерно везде говорится.

Тредлокал привязан к платформенному треду

Ilya-Starchenko Автор вопроса
Dima
Тредлокал привязан к платформенному треду

https://github.com/openjdk/jdk/blob/dc4bc4f0844b768e83406f44f2a9ee50686b1d9d/src/java.base/share/classes/java/lang/Thread.java#L302 Они в одном месте находятся.

Ilya Starchenko
Давай еще раз, каким образом TL будет менее эффект...

Максимально упрошу(для примера): что дешевле взять 1мб мутабельных данных и пошарь это на 1кк тредов копрованием. Или сделать тоже самое только просто раздавая реф на немутабельные данные. Выше тебе хорошее уточнение дали, что в у тебя ос тредов может быть 10, при этом поверх них вертеться будет 10лямов вирт. Цена доступа к данным показательна.

Ilya-Starchenko Автор вопроса
Max
Максимально упрошу(для примера): что дешевле взять...

Зачем ты повторяешь одно и то же? В чем принципиальная разница пошарить мапу и пошарить линкед лист? Мотивацию текущего перехода я понимаю, я не понимаю, почему изначально было принято решение о миграции, а не о доработки TL, так как принципиальной разницы в них нет.

Ilya-Starchenko Автор вопроса
Max
Раздел Motivation: https://openjdk.org/jeps/446

Ага, правда это никак не отвечает на мой вопрос, но спасибо.

Ilya Starchenko
Ага, правда это никак не отвечает на мой вопрос, н...

Очевидно, меняется контракт, поэтому решили добавить новую реализацию

Ilya-Starchenko Автор вопроса
Ilya Starchenko
О каком контракте идет речь?

Для TL установленное значение доступно для треда пока тот существует и может меняться. Для SV - значение не меняется и доступно в пределах выполнения метода run + наследование контекста. Очевидно, не получится просто заменить одну реализацию на другую

Ilya-Starchenko Автор вопроса
Alex Verkhoglyad
Для TL установленное значение доступно для треда п...

Ну так можно было в ThreadLocal добавить скоуп с наследованием. Такое чувство, что должна быть более объективная техническая причина, почему нельзя было потюнить TL.

Ilya Starchenko
Ну так можно было в ThreadLocal добавить скоуп с н...

Тогда нарушается обратная совместимость - там где раньше значение сохранялось, теперь оно будет зачищаться из-за добавленного скоупа. И да - значение должно стать иммутабельно

Ilya-Starchenko Автор вопроса
Alex Verkhoglyad
Тогда нарушается обратная совместимость - там где ...

Сделать скоуп опциональным, кажется, что в любом случае, это будет проще, чем смигрировать пол мира, который передает контекст через TL(от поддержки которого все равно не отказались).

Ilya Starchenko
Сделать скоуп опциональным, кажется, что в любом с...

Ну считай они его и сделали опциональным. Если нужен скоуп - SV, если в пределах треда - TL. Как мне кажется, это не из-за тех.проблем, а из-за разных концепций

Ilya-Starchenko Автор вопроса
Ilya Starchenko
Сделать скоуп опциональным, кажется, что в любом с...

Но если это действительно изначальная причина, то я просто не видел Бейтман или Рон Прейслер именно об этой причине говорят.

Ilya-Starchenko Автор вопроса
Alex Verkhoglyad
Ну считай они его и сделали опциональным. Если нуж...

Ну это разной сложности миграции, зачем вносить новую абстракцию, когда старая вполне успешно справлялась?

Ilya Starchenko
Ну это разной сложности миграции, зачем вносить но...

Ну, ты же видишь, что они по-разному работают

Ilya-Starchenko Автор вопроса
Alex Verkhoglyad
Ну, ты же видишь, что они по-разному работают

Потому что так сделали, но принципиальной разницы в них. Вариант ввести новую абстракцию звучит проще для реализации, но явно сложнее для миграции.

Ilya Starchenko
Ну это разной сложности миграции, зачем вносить но...

А что не напишешь на майлинг лист вопросы эти? Они обычно радостно на такое отвечают

Ilya-Starchenko Автор вопроса
Denis Pavlyuchenko
А что не напишешь на майлинг лист вопросы эти? Они...

Да как-то не хотелось флудить на дилетантские вопросы, вдруг кто уже видел обсуждение. Но начинаю склоняться к тому, чтоб действительно сходить.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Эх кто-то пришел и весь праздник испортил :( You need complex FBX scene importing setup to change things on import? good luck with that. You need navigation and pathfinding? g...
Serg Gini
5
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Почему стало ломаться на D11? "739002.86400000' is not a valid timestamp" function IncDateTime(aStamp:TTimeStamp;aKind:TTriggerKind;aInterval:Integer):TDateTime; //aStamp = 2...
Катерина Свиридова
8
Привет всем. Подскажите где можно посмотреть, какая версия электрон, поддерживает версии windows? Некий changelog. Мне бы желательно, поддержку 7,8,10... latest, как понимаю и...
Anonym Squad
21
думаешь я не смогу также сделать? мне это просто не удобно
int 💳 𝙖𝙞𝙧 𝙗𝙞𝙜 𝙗𝙤𝙗 🔫 check bio / spam block / AFK / nohello.com / GMT+3
9
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
Ребят, чет я уже не догоняю... Крч в коде на асм там происходит нечто вроде a+число (a+1, a+2 и т.д.). Но почему строка lea ecx, [edx+1] работает как a+1?? В edx берется адрес...
Alan 🔝 Бэброу
3
Есть ли смысл устраиваться на 1с ? Даст это плюс в дальнейшем трудоустройстве на php? Просто у меня в городе вакансий на пхп нету. Или лучше удаленно искать. Опыта работы нету...
Azamat
14
hi im a cs student. i need some advice from people who have enough experience in Embedded Software. I need to know whether this profession is suitable for me. I have watched s...
Sahand 🏔️
8
Карта сайта