java reentrantlock 예제

Java Lock API의 몇 가지 중요한 인터페이스와 클래스는 스레드 동기화와 동기화된 키워드를 사용하는 다양한 메커니즘에 대한 기본 개념을 이미 알고 있습니다. Java는 Lock 인터페이스와 이를 구현하는 클래스(예: ReentrantLock)를 기반으로 하는 코드 블록의 동기화를 위한 또 다른 메커니즘을 제공합니다. 이 자습서에서는 프린터 큐 문제를 해결 하기 위해 Lock 인터페이스의 기본 사용을 볼 것 이다. 다중 스레드 환경에서 동기화를 제공하는 전통적인 방법은 동기화된 키워드를 사용하는 것이었습니다. 그러나 동기화된 키워드는 특정 상황에서 는 다소 엄격한 것으로 간주됩니다. 예를 들어 스레드가 동기화된 블록 내에서 이미 실행중이고 다른 스레드가 블록을 입력하려고 하면 현재 실행 중인 스레드가 블록을 종료할 때까지 기다려야 합니다. 스레드가 동기화된 블록을 입력하지 않는 한 차단된 상태로 유지되며 중단될 수 없습니다. 보류 카운트 정보는 일반적으로 테스트 및 디버깅 목적으로만 사용됩니다. 예를 들어, 코드의 특정 섹션을 이미 보유 된 잠금으로 입력하지 않아야하는 경우 해당 사실을 주장 할 수 있습니다 : 재진입 잠금이 재진입하지 않는 방식으로 사용되도록 하는 데 사용할 수도 있습니다.

1st 는 이러한 각 용어를 이해한 다음 실무 예제를 살펴보겠습니다. 그리고 ReEntrantLock 예는 어디에 있습니까? 나는 자바 잠금 예제, 자바에서 ReentrantLock 및 동기화 된 키워드와 비교 분석을위한 전부의 ReentrantLock이 아닌, 동기화 대 잠금을 참조하십시오. 이 문서에서는 Java ReentrantLock 예제, 사용된 내부 데이터 구조 및 알고리즘의 예를 살펴보겠습니다. 이름에서 알 수 있듯이 ReentrantLock은 동일한 스레드에서 여러 번 획득할 수 있는 잠금입니다. 잠금을 획득하려는 스레드가 이미 잠금을 소유하고 있는 스레드와 같지 않으면 시도가 실패하거나 차단됩니다. 작업 범위가 지정된 경우 지정된 대기 시간이 경과하면 잠금을 획득하려는 시도가 실패합니다. ReentrantLock에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 이 예제에서는 프로그램이 프린터의 동작을 시뮬레이션합니다. 다양한 시간 간격 또는 동시에 여러 인쇄 작업을 프린터에 제출할 수 있습니다. 프린터는 프린터 대기열에서 작업을 수행하여 인쇄합니다. 나머지 일자리는 그들의 차례를 기다릴 것입니다.

프린터가 인쇄 작업을 수행하면 대기열에서 다른 작업을 선택하고 인쇄를 시작합니다. 이 작업을 루프에서 유지합니다. 아주 좋은 설명. 나는이 예제를 잘 작동하려고노력했다. 그러나 이 예제로는 다루지 않는 고광1케이스를 하고 싶습니다. 올바른 코드가 될 것입니다 …. 패키지 재진입;/** * * @author avishek */import java.util.concurrent.locks.ReentrantLock;import java.util.logging.logging.Level;import java.util.logging.logger;/*** 자바 프로그램을 표시 하는 자바 프로그램, 자바에서 ReentrantLock를 사용 하는 방법. 재진입 잠금은 Java에서 동기화된 키워드에서 제공하는 암시적 잠금과는 별개로 잠그는 * 다른 방법입니다.