이 튜토리얼의 운영 환경: Windows 7 시스템, Java 10 버전, DELL G3 컴퓨터.
1. 획득방법
lock(), tryLock(), tryLock(긴 시간, TimeUnit 단위) 및 lockInterruptible()은 모두 잠금을 획득하는 데 사용됩니다.
( 1) lock() 메소드는 잠금을 얻는 데 사용되는 가장 일반적으로 사용되는 메소드입니다. 다른 스레드가 잠금을 획득한 경우 기다리십시오.
( 2) tryLock() 메서드에는 잠금 획득을 시도하는 데 사용되는 반환 값이 있습니다. 획득에 성공하면(즉, 다른 사람이 잠금을 획득한 경우) true를 반환합니다. 스레드), false를 반환합니다. 즉, 메서드는 무슨 일이 있어도 즉시 반환합니다. 자물쇠를 얻을 수 없을 때 거기에서 기다리지 않을 것입니다.
( 3) tryLock(긴 시간, TimeUnit 단위) 메서드는 tryLock() 메서드와 유사하지만 잠금을 얻을 수 없는 경우 일정 시간 동안 대기 한다는 차이점이 있습니다. 제한 시간 내에 false를 반환합니다. 잠금이 처음에 획득되었거나 대기 기간 동안 획득된 경우 true를 반환합니다.
( 4) lockInterruptible() 메소드는 특별합니다. 이 메소드를 통해 잠금을 획득할 때 스레드가 잠금 획득을 기다리고 있으면 스레드가 인터럽트에 응답할 수 있습니다. 즉, 스레드의 대기 상태를 인터럽트할 수 있습니다. 즉, 두 스레드가 lock.lockInterruptible()을 통해 동시에 잠금을 획득하려고 할 때 스레드 A가 이때 잠금을 획득하고 스레드 B가 기다리고만 있다면 threadB.interrupt() 메서드는 다음과 같습니다. 스레드 B에서 호출됩니다. 스레드 B의 대기 프로세스를 중단할 수 있습니다.
2.예시
Trylock을 예로 들어 보겠습니다 .
잠금 잠금 = ...; if(lock.tryLock()) { 노력하다{ //작업 처리 }catch(Exception ex){ }마지막으로{ lock.unlock(); //잠금 해제 } }또 다른 { //잠금을 획득할 수 없으면 직접 다른 작업을 수행}
스레드를 사용할 때 직접 호출을 용이하게 하기 위해 Java 인터페이스 에는 많은 메소드가 저장되어 있습니다. 모두가 잠금 인터페이스에 익숙하며 이미 개념에 대한 사전 이해를 갖고 있습니다. 따라서 잠금을 획득하는 방법은 아직 명확하지 않습니다.
위 내용은 Java에서 잠금을 획득하는 네 가지 방법입니다. 이 기사를 읽은 후 이 영역에 대한 기억력과 이해력을 강화할 수 있습니다. 잠금을 획득하는 다른 방법에 관심이 있다면 수업 후 연습을 위한 관련 코드를 찾을 수도 있습니다.