Что означает термин «военный билет» в контексте Java-разработки?

«Что означает термин «военный билет» в контексте Java-разработки?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

В прямом смысле, термина "военный билет" в Java или стандартной компьютерной терминологии не существует. Это бытовое понятие, связанное с военной службой.

Если вопрос метафорически намекает на документ, подтверждающий статус, доступ или безопасность, то в контексте многопоточного программирования можно говорить о механизмах синхронизации и потокобезопасности.

Аналоги в Java для контроля доступа и безопасности в многопоточной среде:

  1. Синхронизированные коллекции: Collections.synchronizedList(new ArrayList()) — обеспечивают безопасность за счёт блокировки на весь объект.
  2. Потокобезопасные коллекции из java.util.concurrent:
    • ConcurrentHashMap — высокая производительность за счёт блокировок на уровне сегментов или ячеек.
    • CopyOnWriteArrayList — создаёт новую копию массива при изменении, безопасно для частого чтения.
  3. Атомарные классы: AtomicInteger, AtomicReference — для атомарных операций над отдельными переменными (см. предыдущий вопрос).

Пример "пропуска" в ConcurrentHashMap:

ConcurrentHashMap<String, Integer> accessRegistry = new ConcurrentHashMap<>();
// Потокобезопасное добавление "пропуска"
accessRegistry.put("userId-12345", SecurityLevel.ALLOWED);