Java 멀티스레드 2.1.다중 스레드 고정 잠금 장치
2166 단어 Java 다중 스레드 및 메모리 모델
다중 스레드 고정 잠금 장치
1. 개체 Lock 잠금
동기화 코드 블록과 동기화 방법의 자물쇠 대상 문제를 이해할 수 있지만 어디에 자물쇠를 달았는지, 어디서 자물쇠를 풀었는지 직접 보지 못했다.
JDK5는 잠금을 추가하고 해제하는 방법을 더욱 명확하게 표현하기 위해 앞으로 새로운 잠금 대상 Lock을 제공했다.
2. 동기화 폐단:
3. 잠금 해제 문제와 코드 설명:
(1) 스레드 클래스 만들기
package cn.itcast_02;
public class DieLock extends Thread {
private boolean flag;
public DieLock(boolean flag) {
this.flag = flag;
}
@Override
public void run() {
if (flag) {
synchronized (MyLock.objA) {
System.out.println("if objA");
synchronized (MyLock.objB) {
System.out.println("if objB");
}
}
} else {
synchronized (MyLock.objB) {
System.out.println("else objB");
synchronized (MyLock.objA) {
System.out.println("else objA");
}
}
}
}
}
(2) 잠금 생성
package cn.itcast_02;
public class MyLock {
//
public static final Object objA = new Object();
public static final Object objB = new Object();
}
(3) 테스트 스레드 클래스
package cn.itcast_02;
/*
* :
* A:
* B:
* :
* , 。
* :
* , 。
* :
* :
* :
* :
* : 1 ,
* : 1 ,
*/
public class DieLockDemo {
public static void main(String[] args) {
DieLock dl1 = new DieLock(true);
DieLock dl2 = new DieLock(false);
dl1.start();
dl2.start();
}
}