powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / многопоточность. атомики.
21 сообщений из 21, страница 1 из 1
многопоточность. атомики.
    #38499055
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть ли какая то разница между

Код: java
1.
atomicInteger.incrementAndGet();



Код: java
1.
2.
3.
synchronized{
      nonAtomicInteger++;
}


?
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499099
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,

есть
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499126
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
Грубо говоря, когда два потока начинают бороться за synchronized секцию, то один из них как бы "засыпает" - блокируется. Усыпить, затем разбудить поток, это комплексный процесс состоящий из множества разных операций как в JVM так и на уровне ОС. Кроме этого когда поток блокируются, ОС может начать выполнение другого потока. Для этого требуется "переключение контекста". Когда данные нового потока должны быть записаны в CPU.
Там ещё очень много разных нюансов, но в первом приближении так.

Atomic переменные работают соверешенно иначе. Они используют Compare-And-Swap техники вплоть до специальных инструкций процессора, для того чтобы атомарно изменять переменные, не блокируя потоки.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499130
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Вы описали, как это работает. то есть сравнили два пути достижения цели. а цель то одна будет или всё таки есть отличия для меня как для программиста?
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499135
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Вы описали, как это работает. то есть сравнили два пути достижения цели. а цель то одна будет или всё таки есть отличия для меня как для программиста?
Мда. Для программиста разница есть. Для быдлокодера - нет. Выбирайте.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499225
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczredwhite90Вы описали, как это работает. то есть сравнили два пути достижения цели. а цель то одна будет или всё таки есть отличия для меня как для программиста?
Мда. Для программиста разница есть. Для быдлокодера - нет. Выбирайте.
Ну зачем же так сразу. Разница только в производительности, и то она будет заметна только в крайних случаях.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499252
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

для меня было важно понять смысл атомиков, поэтому я удовлетворён вашим ответом)
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499258
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Blazkowicz,
для меня было важно понять смысл атомиков, поэтому я удовлетворён вашим ответом)Смысл простой - делать атомарные операции под большой нагрузкой эффективнее, чем это можно сделать через synchronized/Lock.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499306
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rfqНу зачем же так сразу. Разница только в производительности, и то она будет заметна только в крайних случаях.
Нет, не только в производительности.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499714
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

авторНет, не только в производительности.

хочется каких-то пояснений.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499722
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90хочется каких-то пояснений.
Например, на блокировках можно огрести взаимную блокировку. На неблокирующих алгоритмах - нельзя.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499729
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90хочется каких-то пояснений.Вот меня всегда такие комментарии в ступор вводят. "Каких-то пояснений" - это каких? Конструктивный разговор должен строиться примерно так: "Я почитал то-то и то-то, понял то, не понял се, хочу уточнить вот это", а не "какие-то" пояснения.
Темы атомиков жеваны пережеваны уже миллионы раз. Откройте Гугл, вбейте там "java atomics cas", вкурите. Потом вбейте "java atomics performance", вкурите. А потом возвращайтесь сюда, и спрашивайте, что осталось непонятным.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499734
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv,

Справедливый вопрос был задан, мне например было тоже непонятно, какая разница кроме производительности имеется ввиду, для 1й синхронизированной строки. Ну теперь мы знаем, что речь уже не об 1й строке, а о синхронизации вообще.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499743
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛагманСправедливый вопрос был задан, мне например было тоже непонятно, какая разница кроме производительности имеется ввиду, для 1й синхронизированной строки. Ну теперь мы знаем, что речь уже не об 1й строке, а о синхронизации вообще.
А вот, например, starvation можно, в теории, отгрести и на одной синхронизированой строке.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499826
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЛагманСправедливый вопрос был задан, мне например было тоже непонятно, какая разница кроме производительности имеется ввиду, для 1й синхронизированной строки. Ну теперь мы знаем, что речь уже не об 1й строке, а о синхронизации вообще.
А вот, например, starvation можно, в теории, отгрести и на одной синхронизированой строке.
Что, и на этой тоже?
Код: java
1.
2.
3.
synchronized{
      nonAtomicInteger++;
}
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499832
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rfqЧто, и на этой тоже?
Код: java
1.
2.
3.
synchronized{
      nonAtomicInteger++;
}


Ну, если у вас есть объяснения почему на этом коде не может быть starvation, я с удовольствием их прочитаю.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499858
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если быть справедливым, то, в теории, starvation можно огрести и на CAS. Но на практике это ещё менее вероятная ситуация, чем на коротких блокировках.
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499937
rfq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНапример, на блокировках можно огрести взаимную блокировку. На неблокирующих алгоритмах - нельзя.
Вот 2 программиста. Оба решают - написать incrementAndGet или synchronized{nonAtomicInteger++;}. Первый думает - а, разницы нет. Второй думает - я где-то читал, что на блокировках можно огрести взаимную блокировку, напишу incrementAndGet от греха подальше.

Вопрос - кто из них программист, а кто быдлокодер?
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38499954
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rfqВот 2 программиста. Оба решают - написать incrementAndGet или synchronized{nonAtomicInteger++;}. Первый думает - а, разницы нет. Второй думает - я где-то читал, что на блокировках можно огрести взаимную блокировку, напишу incrementAndGet от греха подальше. Вопрос - кто из них программист, а кто быдлокодер?

Замыкаем тему саму на себя 15284522 .
Вообще классный приём для пятницы. Возьму на вооружение. Берем утверждение выше по теме и придумываем вопрос на который оно отвечает. Постим. Profit!
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38500244
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,


BlazkowiczrfqЧто, и на этой тоже?
Код: java
1.
2.
3.
synchronized{
      nonAtomicInteger++;
}



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

мда, jvm просто так работать не заставишь, то у неё starvation, то ещё что... а потом жалуются на плохую репутацию java
...
Рейтинг: 0 / 0
многопоточность. атомики.
    #38500261
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лагманмда, jvm просто так работать не заставишь, то у неё starvation, то ещё что... а потом жалуются на плохую репутацию java
То ли дело C++, то Memory Access Violation, то невызваный деструктор. Это вам не примитивы синхронизировать.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / многопоточность. атомики.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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