TGViewer
Java Learning Java Learning @java_per_month · 16.6K subscribers
Post #3647 2.65K
❌ Антипаттерн недели: Забытая блокировка в многопоточном коде

Если использовать блокировки (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();
}
}


Java Learning 👩‍💻
  • 👍 11
  • 😁 1
More from @java_per_month
  1. Sep 14, 2026❓ Вопрос на собеседовании Что такое ForkJoinPool в Java, как он работает, и как его исполь…
  2. Sep 4, 2026⚙️ List.subList() В Java метод subList() позволяет создать представление части списка. Это…
  3. Sep 1, 2026🔴 Завтра тестовое собеседование с Java-разработчиком 2 сентября(уже завтра!) в 19:00 по м…
  4. Aug 17, 2026➡️ Quarkus — быстрый и лёгкий фреймворк для Java-приложений Quarkus — оптимизированный фре…
  5. Aug 13, 2026⚙️ Collectors.joining() В Java метод Collectors.joining() из пакета java.util.stream позво…
  6. Aug 4, 2026🔴 Завтра тестовое собеседование с Java-разработчиком 5 августа(уже завтра!) в 19:00 по мс…
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 →