위의 예는 개념을 명확히 하는 것입니다. 예를 들어 프로그래밍 방식으로 Java에서 교착 상태를 만드는 방법을 배웁니다. 또한 교착 상태를 감지하고 소스 코드에서 교착 상태를 해결하는 방법도 알아봅니다. 동시 컴퓨팅에서 교착 상태는 그룹의 각 구성원이 메시지를 보내거나 잠금을 해제하는 등의 작업을 수행하기 위해 자신을 포함한 다른 구성원을 기다리는 상태입니다. [1] 교착 상태는 소프트웨어 및 하드웨어 잠금이 공유 리소스를 중재하고 프로세스 동기화를 구현하는 데 사용되는 다중 처리 시스템, 병렬 컴퓨팅 및 분산 시스템에서 일반적인 문제입니다. [2] 참조: 동기화된 키워드를 http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/7_Deadlocks.html http://www2.latech.edu/~box/os/ch07.pdf 클래스 또는 메서드 스레드를 안전하게 만드는 데 사용되므로 스레드가 하나만 잠금이 있을 수 있습니다. 동기화 된 방법을 사용하여 다른 스레드는 잠금 이 해제 될 때까지 기다려야하며 그 중 누구라도 해당 잠금을 획득할 때까지 기다려야합니다. 프로그램이 둘 이상의 스레드가 동시에 실행되는 다중 스레드 환경에서 실행되는 경우 사용하는 것이 중요합니다. 그러나 때로는 교착 상태라고하는 문제가 발생합니다. 다음은 교착 상태 조건의 간단한 예입니다.
교착 상태는 둘 이상의 스레드가 서로 를 기다리며 영원히 차단되는 상황을 설명합니다. 교착 상태는 여러 스레드가 동일한 잠금을 필요로 하지만 다른 순서로 가져올 때 발생합니다. Java 다중 스레드 프로그램은 동기화된 키워드로 인해 실행 스레드가 지정된 개체와 연결된 잠금 또는 모니터를 기다리는 동안 차단되기 때문에 교착 상태 조건이 발생할 수 있습니다. 다음은 예제입니다. 교착 상태는 다음 네 가지 조건이 동시에 유지되는 경우 발생할 수 있습니다 (필요한 조건) 상호 제외: 하나 이상의 리소스가 한 번에 하나만 사용할 수 있음) 보류 및 대기: 프로세스가 하나 이상의 리소스를 보유하고 대기 중일 수 있습니다. 리소스. 선점 없음: 프로세스가 리소스를 해제하지 않는 한 프로세스에서 리소스를 사용할 수 없습니다.