powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / java concurrency and multithreading
25 сообщений из 102, страница 3 из 5
java concurrency and multithreading
    #39319696
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

вышенаписанное не имеет отношения к java.util.concurrent.Future
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39319945
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
событийная модель у меня всё чаще вызывает ощущение что тупо вернули когда то похеренный оператор гоу-ту в бейсике образца 1978-го года. и назвали его ивентом. а суть та же ))
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320010
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
natanabrahamjrсобытийная модель у меня всё чаще вызывает ощущение что тупо вернули когда то похеренный оператор гоу-ту в бейсике образца 1978-го года. и назвали его ивентом. а суть та же ))
Да многое можно назвать синтаксическим сахаром, однако же так удобнее, чем совсем без сахара, в машинных кодах.
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320025
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
privateАсинхронность в жаве - это костыль призванный компенсировать неспособность жавы и JVM эффективно работать с легкими процессами.
А что такое этот ваш "легкий процесс"? Попахивает, что это просто маркетинговый bullshit
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320113
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimir,

наверное, имеется в виду линуксовый fork(). Но это лет 20 как не модно уже - все современные демоны используют потоки и селекторы.
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320185
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В контексте исходного вопроса топика мне очень нравится начало доклада Руслана Черемина на одном из JPoint [spoiler]
YouTube Video
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320199
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirТак как нет спроса на такое количество специалистов, знающих это область на высоком уровне, для подавляющего большинства задач достаточно уметь правильно проставлять synchronized и volatile и на этом потребности заканчиваются.
А, ну на таком то уровне надеюсь я уже изучил. Большинство работодателей получается не станет спрашивать про модель памяти Java, happens-before, и всякие там семафоры?
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320273
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLojust_vladimirТак как нет спроса на такое количество специалистов, знающих это область на высоком уровне, для подавляющего большинства задач достаточно уметь правильно проставлять synchronized и volatile и на этом потребности заканчиваются.
А, ну на таком то уровне надеюсь я уже изучил. Большинство работодателей получается не станет спрашивать про модель памяти Java, happens-before, и всякие там семафоры?
Ну модель памяти в Java ничего общего с Subj не имеет и понимать разбиение heap'а на области - imho желательно, что бы совсем уж говнокод жрущий по 1-2 Gb памяти не писать.

С happens before - я вообще подозреваю, что людей которые в этом разбираются очень мало. Т.к. например лично я, вообще понять не могу чем store-store порядок от store-load отличается ))) И зачем при наличие store-load синхронизации народ еще в обязательно порядке store-store впихивает )))

Нафига нужны volatile и как ими корректно пользоваться, мне не очень понятно, Atomic мне кажется более логичным и понятным классом (хотя визуально объявлены через volatile).

IMHO & AFAIK
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320286
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНу модель памяти в Java ничего общего с Subj не имеет и понимать разбиение heap'а на области - imho желательно, что бы совсем уж говнокод жрущий по 1-2 Gb памяти не писать.
Ага, как же, не имеет. А почему-то мне пришлось в процессе изучения конкаренси неоднократно на это натыкаться.

Leonid KudryavtsevС happens before - я вообще подозреваю, что людей которые в этом разбираются очень мало. Т.к. например лично я, вообще понять не могу чем store-store порядок от store-load отличается ))) И зачем при наличие store-load синхронизации народ еще в обязательно порядке store-store впихивает )))
Когда смотришь видеолекцию про это, вроде с трудом, но понятно. Зато в голове как-то не застревает.
Leonid KudryavtsevНафига нужны volatile и как ими корректно пользоваться, мне не очень понятно, Atomic мне кажется более логичным и понятным классом (хотя визуально объявлены через volatile).
Про волатайл я с трудом но вроде понял. Добавляет атомичности чтению записи в лонг и дабл, плюс отменяет кеширование переменной, чтобы все потоки актуальное значение читали. Ну и соответственно устанавливает хэппенс-бефо между записью и дальнейшими чтениями. Кроме того, когда поток читает такую переменную, он видит не только последнее значение переменной, но и также побочные эффекты кода который привёл к изменению.
Вроде всё, или ещё что-то нужно про это знать?
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320288
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevНу модель памяти в Java ничего общего с Subj не имеет и понимать разбиение heap'а на области - imho желательно, что бы совсем уж говнокод жрущий по 1-2 Gb памяти не писать.
ой ли, JMM как раз имеет непосредственное отношение к concurrency


Leonid KudryavtsevС happens before - я вообще подозреваю, что людей которые в этом разбираются очень мало.
Я бы уточнил, кто разбирается в этом на должном уровне

Leonid KudryavtsevТ.к. например лично я, вообще понять не могу чем store-store порядок от store-load отличается ))) И зачем при наличие store-load синхронизации народ еще в обязательно порядке store-store впихивает )))
имхо, это Вы уже куда-то на уровень реализации полезли

Leonid KudryavtsevНафига нужны volatile и как ими корректно пользоваться, мне не очень понятно, Atomic мне кажется более логичным и понятным классом (хотя визуально объявлены через volatile).
не, здесь как раз все просто, описывается формулой atomic = volatile + CAS
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320297
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLoПро волатайл я с трудом но вроде понял. Добавляет атомичности чтению записи в лонг и дабл
Верно, хотя я бы не конкретизировал про long/double, просто добавляет атомарность

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

XDiaBLoНу и соответственно устанавливает хэппенс-бефо между записью и дальнейшими чтениями.
Верно

XDiaBLoКроме того, когда поток читает такую переменную, он видит не только последнее значение переменной, но и также побочные эффекты кода который привёл к изменению.
Совершенно не факт, что он видит последнее значение переменной, но если он увидел какое то значение, то гарантируется, что он увидит все другие изменения выполненные потоком выполнявшим запись этого значения, которые были выполнены до момента записи в эту переменную.
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320302
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirСовершенно не факт, что он видит последнее значение переменной
Так у Оракла в туториале написано. Только сегодня этот момент читал. Если врут, ну это печально.
just_vladimirно если он увидел какое то значение, то гарантируется, что он увидит все другие изменения выполненные потоком выполнявшим запись этого значения, которые были выполнены до момента записи в эту переменную.
Вот тут вроде и всё понятно, однако такое впечатление, будто происходит какой-то сброс кеша потока в момент записи волатайл. И мне не очень понятно почему я не должен думать о кешах, в смысле я должен мыслить на другом уровне абстракции?
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320304
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirне, здесь как раз все просто, описывается формулой atomic = volatile + CAS
Просто хотелось бы пример корректного кода __чисто__ на volatile. Например аналог банального

AtomicInteger.inc

)))

А пока мое IMHO volatile практически бесполезное ключевое слово. О котором достаточно просто знать, что оно есть. (да и то не обязательно). Т.к. на практике или synchronized или Atomic или что-то более сложное для конкретных задач.

имхо, это Вы уже куда-то на уровень реализации полезли
А без этого понять работу кода one producer - one consumer queue vs ConcurrentLinkedQueue на мой взгляд совсем не реально )))

По этому все это "уровень реализации" и наверное достаточно просто иметь общее представление и уметь пользоваться библиотеками.

Ну и например ConcurrentLinkedQueue от гонок в бизнес логике не защищает. Т.ч. я бы сказал, что любое использование чего либо кроме synchronized в 99% "полезть на уровень реализации" с возможностью словить плохо тестируемые гонки в коде.
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320305
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLoВот тут вроде и всё понятно, однако такое впечатление, будто происходит какой-то сброс кеша потока в момент записи волатайл. И мне не очень понятно почему я не должен думать о кешах, в смысле я должен мыслить на другом уровне абстракции?
На Intel архитектурах когерентность кеша обеспечивается hardware. Поэтому на Intel думать ни о каком сбросе кеша не нужно.

На других архитектурах, это берет на себя JVM.

AFAIK
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320309
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLojust_vladimirСовершенно не факт, что он видит последнее значение переменной
Так у Оракла в туториале написано. Только сегодня этот момент читал. Если врут, ну это печально.
Можно ссылочку?
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320310
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevXDiaBLoВот тут вроде и всё понятно, однако такое впечатление, будто происходит какой-то сброс кеша потока в момент записи волатайл. И мне не очень понятно почему я не должен думать о кешах, в смысле я должен мыслить на другом уровне абстракции?
На Intel архитектурах когерентность кеша обеспечивается hardware. Поэтому на Intel думать ни о каком сбросе кеша не нужно.
AFAIK

Вот уже второй раз ошибаешься :)

Если есть два разных кэша (например два проца), то записав данные в память можно, конечно, всегда требовать, чтобы эта же строка, если она есть к кэша другуого процессора, обновилась, но это ОЧЕНЬ дорого стоит.
Для этого и есть волотайл как частный случай барьера.
Т.е. эфективная программа старается лишний раз кэш не сбрасывать. А то ещё бывает false-sharing, который может привести либо к диким тормозам, либо к лишнему расходу памяти.
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320312
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirXDiaBLoпропущено...

Так у Оракла в туториале написано. Только сегодня этот момент читал. Если врут, ну это печально.
Можно ссылочку?
Да конечно, хотя ищется легко: https://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html
авторWhat's more, it also means that when a thread reads a volatile variable, it sees not just the latest change to the volatile , but also the side effects of the code that led up the change.
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320316
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominLeonid Kudryavtsevпропущено...

На Intel архитектурах когерентность кеша обеспечивается hardware. Поэтому на Intel думать ни о каком сбросе кеша не нужно.
AFAIK

Вот уже второй раз ошибаешься :)

Если есть два разных кэша (например два проца), то записав данные в память можно, конечно, всегда требовать, чтобы эта же строка, если она есть к кэша другуого процессора, обновилась, но это ОЧЕНЬ дорого стоит.
Для этого и есть волотайл как частный случай барьера.
Т.е. эфективная программа старается лишний раз кэш не сбрасывать. А то ещё бывает false-sharing, который может привести либо к диким тормозам, либо к лишнему расходу памяти.
Так я вот как раз говорил о том, что такое впечатление что запись в волатайл переменную приводит к обновлению не только самой этой волатайл переменной, но и того что менялось до неё. И интересуюсь правильное ли это предположение?
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320326
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLoТак я вот как раз говорил о том, что такое впечатление что запись в волатайл переменную приводит к обновлению не только самой этой волатайл переменной, но и того что менялось до неё. И интересуюсь правильное ли это предположение?
Да. Хотя это я плохо понимаю ))). Запись в volatile переменную приводит к срабатыванию барьера.

Более "странно" на мой взгляд, что в конструкторе final поля тоже являются барьером. Т.ч. если у тебя immutable класс, где все поля final, то его можно безопасно передавать между потоками. А вот, если он не immutable (mutable) то можно словить проблемы. Вроде сейчас Java-гуру обсуждают, не стоит ли сам new сделать барьером (на мой взгляд стоит, а то хрень разберешь современное поведение) но вроде в JVM 1.8 этого еще нет.

AFAIK
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320327
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominВот уже второй раз ошибаешься :)
Можно ссылку?

https://en.wikipedia.org/wiki/MESIF_protocol
Alexey TominА то ещё бывает false-sharing, который может привести либо к диким тормозам, либо к лишнему расходу памяти.
Одно другому не мешает.
false-sharing как раз и есть проблема из-за cache conerence. IMHO
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320338
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsevjust_vladimirне, здесь как раз все просто, описывается формулой atomic = volatile + CAS
Просто хотелось бы пример корректного кода __чисто__ на volatile. Например аналог банального
AtomicInteger.inc
)))
А пока мое IMHO volatile практически бесполезное ключевое слово. О котором достаточно просто знать, что оно есть. (да и то не обязательно). Т.к. на практике или synchronized или Atomic или что-то более сложное для конкретных задач.
getAndIncrement на чистом volatile вы не реализуете, т.к. это требует CAS.

Зачем нужен volatile - здесь просто, допустим у вас есть singleton глобальная static переменная, но которая не volatile, дак вот в этой ситуации у вас нет никакой гарантии, что разные потоки работающие с этой переменной будут видеть действия друг друга, у каждого потока может существовать свой лунапарк с блекджеком и мир, со своей переменной и он будет видеть только свои изменения.


XDiaBLojust_vladimirпропущено...
Можно ссылочку?
Да конечно, хотя ищется легко: https://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html
авторWhat's more, it also means that when a thread reads a volatile variable, it sees not just the latest change to the volatile , but also the side effects of the code that led up the change.
Я не вижу здесь указания на то, что при чтении мы обязаны увидеть именно последнее значение, которое было туда записано. Но вот как только он его увидит, вот тогда уже:
авторbut also the side effects of the code that led up the change
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320343
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimir,


автор latest change to the volatile
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320347
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про то, что не стоит пытаться опуститься на уровень реализации, а нужно постичь дзен JMM можно читать у Шипилева https://shipilev.net/blog/2016/close-encounters-of-jmm-kind/
Впрочем я сколько раз не пытался осилить, так до конца и не осилил))
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320349
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XDiaBLo,
сойдемся на том, что мы немного по разному понимаем английский язык :-)
...
Рейтинг: 0 / 0
java concurrency and multithreading
    #39320353
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirПро то, что не стоит пытаться опуститься на уровень реализации, а нужно постичь дзен JMM можно читать у Шипилева https://shipilev.net/blog/2016/close-encounters-of-jmm-kind/
Впрочем я сколько раз не пытался осилить, так до конца и не осилил))
Спасибо за ссылку.
just_vladimirXDiaBLo,
сойдемся на том, что мы немного по разному понимаем английский язык :-)
А что там понимать то?
автор latest change to the volatile
Самое последнее изменение в перменчивой переменной :)
...
Рейтинг: 0 / 0
25 сообщений из 102, страница 3 из 5
Форумы / Java [игнор отключен] [закрыт для гостей] / java concurrency and multithreading
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]