Мне кажется мы с вами говорим о разных вещах, если отбросить примитивы long double, можете мне объяснить что по по вашему значит не атомарное чтение или запись например int или String?
Вы правы насчет примитивных double и long, но это скорее исключение. Все остальные операции чтения и записи атомарны и без волатайл.
Еще раз, happens-before это не про атомарность, это про видимость значения. Волатайл обеспечивает видимость, но не атомарность.
Жаль конечно что рекорды так странно сделали. Неужели нельзя было взять синтаксис полей. А то конечно для трех инт переменных x y z выглядит красиво, но десяток полей с классами в спринг стиле будут смотреться достаточно громоздко.
Заметил одно очстранное поведение, если выташить таб с открытым классом с помошью shift + f4 из основного окна, то при нажатии в окне с деревом проекта на иконку которая показывает местоположение файла в проекте. Она будет всегда орентироваться на основное окно, а не то которое мы открыли и выташили из основного.
Во время компиляции компилятор проходит через 5-7 этапов (не помню точно) начиная с parse где происходит чтение исходников и заканчивая на generate где он генерирует class файлы, дак вот, можно вмешатся в некоторые стадии этого процесса и получить нужны нам class файл. Чтобы сделать это, необходимо имплементировать интерфейс Plugin.
Да, появилась возможность писать плагины к jvm. Например можно взять два BigDecimal a + b, а во время компилации это будет заменено на вызов метода add. Поищите, в интернете есть и видео и статьи как это делается, в том числе и на русском.
Извините, а чам вам мапстрикт не нравится? Возможности у него достаточно обширные, а разница в имени полей легко настраивается с помощью "source" и "target".
И разве это служит оправданием? "Да это ведь учебная книга и поэтому мы будем вам писать код в отвратительном стиле" понятно что они учат языку программирования, но ведь стиль написания кода не менее важен чем умение работы с массивами.
Мне кажется мы с вами говорим о разных вещах, если отбросить примитивы long double, можете мне объяснить что по по вашему значит не атомарное чтение или запись например int или String?
Вы правы насчет примитивных double и long, но это скорее исключение. Все остальные операции чтения и записи атомарны и без волатайл.
Еще раз, happens-before это не про атомарность, это про видимость значения. Волатайл обеспечивает видимость, но не атомарность.
Извините, но чтение или запись и так являются атомарными операциями и без волатайл. Волатайл нам дает слабую синхронизацию, но не атомарность.
Нет не делает, i++ волатайл не являются атомарной операцией в отличии от AtomicInteger с его методом incrementAndGet
Почему декларирование полей в рекорде сделано после имени в скобках, а не в виде полей.
Например:
record MyRecord {
Int x
String str
}
Жаль конечно что рекорды так странно сделали. Неужели нельзя было взять синтаксис полей. А то конечно для трех инт переменных x y z выглядит красиво, но десяток полей с классами в спринг стиле будут смотреться достаточно громоздко.
Я думаю это не аам решать, но не переживайте ответственный товарищь Ма*ор разберётся.
Заметил одно очстранное поведение, если выташить таб с открытым классом с помошью shift + f4 из основного окна, то при нажатии в окне с деревом проекта на иконку которая показывает местоположение файла в проекте. Она будет всегда орентироваться на основное окно, а не то которое мы открыли и выташили из основного.
Всегда.
Может вы путаете с "один файл исходного кода, один публичный класс"
Вот после таких деятелей, боящихся уровней стека, приходится дебажить методы на 15к строк кода с одним ретерном в конце.
Во время компиляции компилятор проходит через 5-7 этапов (не помню точно) начиная с parse где происходит чтение исходников и заканчивая на generate где он генерирует class файлы, дак вот, можно вмешатся в некоторые стадии этого процесса и получить нужны нам class файл. Чтобы сделать это, необходимо имплементировать интерфейс Plugin.
https://docs.oracle.com/javase/8/docs/jdk/api/javac/tree/com/sun/source/util/Plugin.html
Да, появилась возможность писать плагины к jvm. Например можно взять два BigDecimal a + b, а во время компилации это будет заменено на вызов метода add. Поищите, в интернете есть и видео и статьи как это делается, в том числе и на русском.
Интересно, а если объявить такую переменную просто в теле метода, или можно только в условных операторах?
Уже есть и давно, в восьмой джаве появилось.
А может это проблема в людях которые готовы терпеть таких чиновников?
Извините, а чам вам мапстрикт не нравится? Возможности у него достаточно обширные, а разница в имени полей легко настраивается с помощью "source" и "target".
Получается по качеству можно определить примерное количество раз которое картинка была закачана и скачана?
А чем ЧУЖИЕ не устраивают?
И разве это служит оправданием? "Да это ведь учебная книга и поэтому мы будем вам писать код в отвратительном стиле" понятно что они учат языку программирования, но ведь стиль написания кода не менее важен чем умение работы с массивами.
А на сколько ценится такая сертификация не в контексте саморазвития, но у работадателей?