TGViewer
Java задачи с собеседований Java задачи с собеседований @javaquiz · 5.72K subscribers
Post #2412 1.26K
‍❌ Антипаттерн недели: Забытая блокировка в многопоточном коде

Если использовать блокировки (synchronized) и забыть их освободить в случае исключения, можно легко привести к deadlock (взаимоблокировке).

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

✔️ Как исправить:

Используйте try-finally для гарантированного освобождения блокировки:
public class FixedExample {
private final Object lock = new Object();

public void performTask() {
synchronized (lock) {
try {
System.out.println("Задача выполняется...");
if (true) {
throw new RuntimeException("Ошибка!");
}
System.out.println("Задача завершена.");
} finally {
System.out.println("Блокировка освобождена.");
}
}
}

public static void main(String[] args) {
FixedExample example = new FixedExample();
example.performTask();
}
}

👩‍💻

@javaquiz
  • 👎 4
  • 👍 2
More from @javaquiz
  1. Sep 14, 2026❓ Вопрос на собеседовании Что такое ForkJoinPool в Java, как он работает, и как его исполь…
  2. Sep 4, 2026⚙️ List.subList() В Java метод subList() позволяет создать представление части списка. Это…
  3. Aug 17, 2026➡️ Quarkus — быстрый и лёгкий фреймворк для Java-приложений Quarkus — оптимизированный фре…
  4. Jul 23, 2026⚙️ Files.mismatch() Метод Files.mismatch(), добавленный в Java 12, позволяет сравнить два…
  5. Jul 11, 2026❓ Вопрос на собеседовании Что такое ConcurrentHashMap в Java, как он работает и чем отлича…
  6. Jul 9, 2026#вопросы_с_собеседований Что будет, если в Map положить два значения с одинаковым ключом?…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →