Trung BìnhJava iconJava

Deadlock là gì? Làm thế nào để phòng tránh?

Deadlock xảy ra khi các thread chờ đợi tài nguyên của nhau theo vòng tròn — tất cả bị blocked mãi mãi.

Ví dụ: Thread A giữ Lock 1, chờ Lock 2; Thread B giữ Lock 2, chờ Lock 1. Phòng tránh:

  1. lock ordering — luôn acquire lock theo cùng một thứ tự
  2. timeouts — dùng tryLock(timeout)
  3. tránh nested lock
  4. dùng cấu trúc cấp cao hơn (concurrent collections, ExecutorService). Phát hiện deadlock cần monitor thread states bằng JVisualVM hoặc thread dump

Xem toàn bộ Java cùng filter theo level & chủ đề con.

Mở danh sách Java