Size: a a a

2017 January 22

A

Alchemist in learn.java
Очень странно видеть инкремент константы, да
источник

A

Alchemist in learn.java
Что это за книжка такая странная
источник

A

Alchemist in learn.java
?
источник

J

James Tiberius Kirk in learn.java
Alchemist
Очень странно видеть инкремент константы, да
с чего ты взял, что это константа?
источник

J

James Tiberius Kirk in learn.java
просто автор по неведомой причине решил назвать переменную в стиле константы
источник

A

Alchemist in learn.java
James Tiberius Kirk
с чего ты взял, что это константа?
Я про нэйминг конвеншн
источник

DS

Dmitriy Shilnikov in learn.java
Alchemist
Что это за книжка такая странная
источник

A

Alchemist in learn.java
Charm
под синхом волатайл нафиг не нужен. более того он бы и не помог, инкремент волатайла не атомарен
Ну а как же знаменитый Double-check locking?
источник

A

Alchemist in learn.java
В синглтоне
источник

A

Alchemist in learn.java
Волатайл позволяет менять время, когда переменная опубликуется
источник

DS

Dmitriy Shilnikov in learn.java
Alchemist
Волатайл позволяет менять время, когда переменная опубликуется
но в этом примере она больше нигде не читается
источник

A

Alchemist in learn.java
Наверное, это все таки в истории про программистов, которые не знают точно, что делает волатайл, и суют его куда не надо
источник

A

Alchemist in learn.java
источник

A

Alchemist in learn.java
Вообще по хорошшему тут атомик нужен
источник

DS

Dmitriy Shilnikov in learn.java
угу, это я уже понял
источник

A

Alchemist in learn.java
У Тагира была небольшая статья про DCL и volatile =)
источник

DS

Dmitriy Shilnikov in learn.java
придётся каждую главу внимательно изучать )
источник

A

Alchemist in learn.java
источник

AK

Alexander Kazakov in learn.java
Dmitriy Shilnikov
Всем привет. Я тут книжку одну читаю и не понимаю один момент.
В примере создаётся веб-приложение для добавления тикетов, у каждого тикета есть id. Для счётчика тикетов используется поле в самом сервлете

private volatile int TICKET_ID_SEQUENCE = 1;

Используется это в коде всего в одном месте и следующим образом (это, разумеется, функция добавления тикета).
synchronized(this) {
 id = this.TICKET_ID_SEQUENCE++;
       this.ticketDatabase.put(id, ticket);
}

Я тут всяких видео насмотрелся и начал задумываться о том, что поле TICKET_ID_SEQUENCE не обязано быть volatile, т.к. synchronized(this) хватит для того, чтобы выстроить очередь операций так, как нам нужно. Гугл тоже говорит, что volatile тут лишнее.
Я прав, или я чего-то не учитываю?

И вообще, если бы, допустим, не было synchronized, то volatile ведь всё равно не спасло бы, т.к. его инкремент не атомарный?
В сервлете нельзя же хранить стейт. Может, статик поле используется?
источник

DS

Dmitriy Shilnikov in learn.java
Alexander Kazakov
В сервлете нельзя же хранить стейт. Может, статик поле используется?
почему нельзя? они же живут постоянно?
источник