Работал ли с Semaphore

«Работал ли с Semaphore» — вопрос из категории Многопоточность, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. Semaphore — это механизм синхронизации, который ограничивает количество потоков, одновременно получающих доступ к ресурсу. В Android его можно использовать через Semaphore из java.util.concurrent.

Пример:

val semaphore = Semaphore(3) // разрешает 3 потокам одновременно

fun accessResource() {
    try {
        semaphore.acquire() // блокирует, если лимит исчерпан
        // работа с ресурсом
    } finally {
        semaphore.release() // освобождает слот
    }
}

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