Рубрика: Java
-
Что такое атомарные операции? Какие механизмы их реализации можешь перечислить? Атомарны ли операции присваивания?
Атомарные операции: Атомарные операции — это операции, которые выполняются полностью или не выполняются вовсе, не допуская частичной модификации данных между потоками. Механизмы реализации: Атомарны ли операции присваивания? Операции присваивания примитивов (кроме long и double) атомарны, но не для сложных объектов.
-
Как из HashMap-а сделать потокобезопасный HashMap?
Чтобы сделать потокобезопасный HashMap, можно использовать следующие подходы: ConcurrentHashMap обычно предпочтительнее, так как предоставляет лучшую производительность в многопоточной среде.
-
Что делает synchronized?
synchronized — это ключевое слово в Java, которое используется для управления доступом к критическим секциям кода между несколькими потоками. Когда метод или блок кода помечен как synchronized, только один поток может получить доступ к этому коду в одно и то же время. Основные функции synchronized:
-
Как сделать так, чтобы поток не кэшировал данные? Что делает volatile?
Чтобы поток не кэшировал данные в Java, нужно использовать ключевое слово volatile для переменной. Это гарантирует, что каждый раз при обращении к переменной поток будет читать её актуальное значение из основной памяти, а не из кэша потока. Что делает volatile:
-
Как потоки в себе хранят данные, как к себе обращаются?
Как потоки хранят данные: Как потоки обращаются к данным:
-
Какие знаешь механизмы реализации Concurrency? Semaphore, CountDownLatch — что такое, зачем нужны, какие бывают?
Зачем нужны: Используются для координации потоков и синхронизации их доступа к общим ресурсам. Механизмы реализации Concurrency:
-
Расскажи DeadLock, LiveLock, Starvation, SplitBrain
Основные понятия в многопоточности: Deadlock (Взаимная блокировка): Ситуация, когда два или более потоков ждут друг друга для освобождения ресурсов, что приводит к бесконечному ожиданию. Livelock (Живой блок): Потоки продолжают изменять свое состояние, чтобы избежать deadlock-а, но не могут прогрессировать, так как постоянно «уступают» друг другу ресурсы. Starvation (Голодание): Один поток постоянно отказывается от доступа к…
-
Что такое Race condition?
Race condition — это ситуация в многопоточном программировании, когда результат работы программы зависит от порядка или времени выполнения потоков. Она возникает, когда несколько потоков одновременно пытаются получить доступ и изменить общий ресурс, и, если доступ не синхронизирован, это может привести к некорректным или непредсказуемым результатам. Пример: Если два потока одновременно изменяют одно и то же…
-
Чем отличаются StringBuffer от StringBuilder? Когда использовать StringBuilder?
Различия между StringBuffer и StringBuilder: Когда использовать StringBuilder: Используйте StringBuilder в однопоточных приложениях или если не требуется синхронизация. Он предпочтителен для работы с динамическими строками в случаях, когда нет необходимости в потокобезопасности, поскольку он быстрее.
-
Что такое StringPool? Почему предпочтительнее пароли передавать в CharSequence вместо String?
String Pool — это специальная область памяти в Java, где хранятся строковые литералы. Когда создается строка, JVM проверяет пул на наличие той же строки. Если она уже есть, то возвращает существующую ссылку, а не создает новый объект. Это помогает уменьшить потребление памяти и ускорить работу с часто используемыми строками. Почему пароли предпочтительнее передавать в CharSequence: