Middle+
55
questionbank

Как сделать метод потокобезопасным, чтобы он не мог быть вызван из другого потока, пока выполняется в одном потоке?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Используйте ключевое слово synchronized для метода.

java

Также можно использовать synchronized блок с монитором объекта.

java

Другие механизмы для более сложной синхронизации:

  • ReentrantLock: Более гибкая альтернатива synchronized с возможностью получения информации о блокировке и управлением таймаутами.
  • Semaphore: Ограничивает количество потоков, которые могут одновременно получить доступ к ресурсу.
  • Atomic классы (например, AtomicInteger): Предоставляют атомарные операции над примитивными типами без явной блокировки.

Пример с AtomicInteger:

java