1. 프로세스 교착 상태 및 해결 방법
1. 중요 팁
(1) 교착 상태의 개념과 근본 원인을 숙지하세요.
(2) 교착 상태의 필요 조건을 이해합니다. 상호 배제 조건, 비선점 조건, 소유 및 적용 조건, 루프 대기 조건의 네 가지 조건이 동시에 충족되어야 합니다.
(3) 교착 상태를 해결하는 일반적인 방법을 기억하고 교착 상태 예방 및 교착 상태 회피의 기본 개념을 숙지하세요.
(4) 교착상태 예방 전략에서 자원의 질서 있는 할당 전략을 숙지하세요.
(5) 프로세스 안전 시퀀스의 개념과 교착 상태와 안전 시퀀스의 관계를 이해합니다.
(6) 은행가의 알고리즘을 이해합니다.
(7) 자원배분도를 이해한다.
(8) 교착 상태 감지 및 복구 개념을 이해합니다.
2. 교착 상태에 관해 개인적인 이해:
일정 기간 연구를 통해 제가 이해한 교착 상태의 개념은 예를 들어 두 개의 프로세스가 있고 각 프로세스는 두 개의 잠금(잠금 1)으로 잠겨 있다는 것입니다. , 잠금 2), 잠겨 있습니다. 차이점은 두 프로세스에서 잠금 적용 위치가 다르다는 것입니다. 결과적으로 프로세스를 완전히 시작하려면 내부 잠금이 필요하며 이 잠금은 다른 프로세스에서 발생합니다. 다른 프로세스가 내부 프로세스를 완전히 시작(또는 실행)하는 데 필요한 잠금은 다른 프로그램에 있습니다. 이렇게 서로 얽혀 있고, 모두 준비 단계지만 실행을 할 수 없는 상태다. 교착 상태가 발생했습니다. 내 이해를 바탕으로 도식을 그렸습니다:
3. 교착 상태에 대한 간단한 코드:public class Test15 {public static void main(String[] args) throws InterruptedException {new Thread(new DeadLockThread(true)).start();//Thread.sleep(10);在中间用上它可以使结果交替出现,我是为了看死锁的效果,用它对比一下。new Thread(new DeadLockThread(false)).start(); } }class DeadLockThread implements Runnable {static Object o1 = new Object();static Object o2 = new Object();private boolean flag; DeadLockThread(boolean flag) {this.flag = flag; }public void run() {if (flag == true) {while (true) {synchronized (o1) { System.out.println("这是锁o1");synchronized (o2) { System.out.println("这是锁o2"); }
위 내용은 Java의 교착상태 개념과 해결방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!