Функция случайных вопросов поможет вам подумать и проверить свои знания.
Попробуйте ответить на вопросы устно или в уме, а затем нажмите на сам вопрос, чтобы сравнить свой ответ и проанализировать его.
Что вы упустили? А может быть, вы знаете гораздо больше? Так или иначе, это хорошая практика. :)
В базе данных хранится около 500 вопросов, охватывающих различные темы из категорий таких как Core-1, Core-2, Многопоточность, SQL, Hibernate, Spring, Паттерны, Алгоритмы.
В категории M-BOSS находятся вопросы, которые могут встречаться на технических собеседованиях Java - разработчиков. (взято из открытых источников)
Приглашаю вас присоединиться к телеграм-группе для обратной связи и получения информации о будущих обновлениях! Хочу вас также пригласить в дискорд, для общения на различные темы о Java и не только в ламповой атмосфере.
Дискорд будет пополняться не сложными практическими задачами, которые будут помогать прокачивать навыки технического мышления!
Заходите на канал "задачи-по-java" и оттачивайте свои навыки!
Помните: Именно кропотливый труд над собой, делает из вас профессионала высокого уровня!
Приятного обучения!

Что означает ключевое слово volatile? Почему операции над volatile переменными не атомарны?

Многопоточность

Ключевое слово `volatile` в Java используется для обозначения переменных, которые могут быть изменены несколькими потоками. Оно обеспечивает видимость изменений, сделанных одним потоком, другим потокам, что гарантирует согласованность данных при многопоточном доступе. Однако операции над `volatile` переменными не являются атомарными. Это означает, что если несколько потоков одновременно выполняют операции чтения и записи над `volatile` переменной, то могут возникнуть гонки данных (data races). Гонка данных возникает, когда два или более потока одновременно выполняют операции чтения и записи над одной и той же переменной, и результат зависит от порядка выполнения операций. В случае `volatile` переменных, операции чтения и записи могут происходить параллельно, и порядок выполнения может быть непредсказуемым. Например, если несколько потоков одновременно выполняют операцию инкремента над `volatile` переменной, то результат может быть неправильным из-за гонок данных. Каждый поток может прочитать текущее значение переменной, увеличить его и записать обратно, но при этом одно из увеличений может быть потеряно, что приведет к неправильному результату. Чтобы обеспечить атомарность операций над переменными, которые изменяются несколькими потоками, в Java предоставляются другие механизмы синхронизации, такие как блокировки ( `Locks` ), атомарные классы ( `Atomic Classes` ) и синхронизированные методы ( `synchronized methods` ), которые гарантируют правильное выполнение операций при многопоточном доступе.

Открыть

Копировать ссылку

ДРУГОЙ ВОПРОС