20. what is a deadlock?

toutbon·2024년 6월 18일
0

질문의 목적

  • 멀티쓰레드에서 발생할 수 있는 데드락의 개념을 묻는 문제이다.

DeadLock in Java

  • 두 세개의 쓰레드가 영원히 서로가 끝나기만을 기다리는 것
  • when multiple threads need the same locks but obtain them in different order
  • 교착상태라고도 한다

Keyword check

  • 멀티스레드가 서로의 락을 기다리며 영원히 블락이 되어있어서 프로그램이 더이상 진행되지 않는 상황

데드락을 피하는 방법

  • 하나 이상의 멀티플 락을 선점하지 않는다
  • sync 블럭 내에 sync 블럭을 포함하는 nested lock을 피한다
  • lock을 얻는 순서를 동일하게 한다
  • 퍼포먼스가 중요하지 않다면 single thread를 사용함
profile
뚜봉

0개의 댓글