Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / многопоточность. атомики. / 21 сообщений из 21, страница 1 из 1
12.12.2013, 18:10:27
    #38499055
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
многопоточность. атомики.
Есть ли какая то разница между

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



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


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

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

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

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

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

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

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

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


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

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

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


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



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

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


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