>  기사  >  Java  >  Java에서 잠금 획득 방법은 무엇입니까?

Java에서 잠금 획득 방법은 무엇입니까?

王林
王林앞으로
2023-05-19 13:13:061989검색

1. 획득 방법

lock(), tryLock(), tryLock(장시간, TimeUnit 단위) 및 lockInterruptible()은 모두 잠금을 획득하는 데 사용됩니다.

(1) lock() 메서드는 가장 일반적으로 사용되는 메서드로 잠금을 획득하는 데 사용됩니다. 다른 스레드가 잠금을 획득한 경우 기다리십시오.

(2) tryLock() 메서드에는 반환 값이 있습니다. 이는 잠금 획득을 시도하는 데 사용된다는 의미입니다. 획득에 성공하면(즉, 잠금이 획득되었습니다.) 다른 스레드에서 획득한 경우) false를 반환합니다. 즉, 이 메서드는 무슨 일이 있어도 즉시 반환합니다. 자물쇠를 얻을 수 없을 때 거기에서 기다리지 않을 것입니다.

(3) tryLock(장시간, TimeUnit 단위) 메서드는 tryLock() 메서드와 유사하지만 유일한 차이점은 이 메서드가 잠금을 얻을 수 없는 경우 특정 시간 동안 대기는 것입니다. 제한 시간 내에 여전히 잠겨 있으며, 잠금을 얻을 수 없으면 false가 반환됩니다. 잠금이 처음에 획득되었거나 대기 기간 동안 획득된 경우 true를 반환합니다.

(4) lockInterruptible() 메소드는 특별합니다. 이 메소드를 통해 잠금을 획득할 때 스레드가 잠금 획득을 대기 중인 경우 스레드는 인터럽트, 즉 인터럽트 스레드의 대기 상태에 응답할 수 있습니다. 즉, 두 스레드가 lock.lockInterruptible()을 통해 동시에 잠금을 획득하려고 할 때 스레드 A가 이때 잠금을 획득하고 스레드 B가 기다리고만 있으면 threadB.interrupt()가 호출됩니다. 스레드 B. 이 메서드는 스레드 B의 대기 프로세스를 중단할 수 있습니다.

2. 예시

trylock을 예로 들어보겠습니다.

아아아아

위 내용은 Java에서 잠금 획득 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제