reentrantlock 예제

리소스 수 : 새 리소스() ; LockExample ex = 새 LockExample(res); 스레드 t1 = 새 스레드(예: „t1”); t1.start(); 스레드 t2 = 새 스레드(예: „t2”); t2.start(); t1.join(); t2.join(); System.out.println(„완성된 잠금 예제”); } } 아래 예제에서 첫 번째 스레드는 잠금을 획득합니다. 또한 재진입 잠금이 재진입하지 않는 방식으로 사용되는지 확인하는 데 사용할 수 있습니다. 기본 제공 모니터 잠금에 대한 Thread.holdsLock(java.lang.Object) 메서드와 유사하게 이 메서드는 일반적으로 디버깅 및 테스트에 사용됩니다. 예를 들어 잠금을 보유하는 동안에만 호출해야 하는 메서드는 이것이 대/소문자를 주장할 수 있습니다. 나는이 예제를 잘 작동하려고노력했다. 그러나 이 예제로는 다루지 않는 고광1케이스를 하고 싶습니다. 그리고 ReEntrantLock 예는 어디에 있습니까? 나는 단지 동기화 대 잠금을 참조, 하지 ReentrantLock 멀티 스레드 환경에서 동기화를 제공하는 전통적인 방법은 동기화 된 키워드를 사용하는 것이었다. 그러나 동기화된 키워드는 특정 상황에서 는 다소 엄격한 것으로 간주됩니다. 예를 들어 스레드가 동기화된 블록 내에서 이미 실행중이고 다른 스레드가 블록을 입력하려고 하면 현재 실행 중인 스레드가 블록을 종료할 때까지 기다려야 합니다.

스레드가 동기화된 블록을 입력하지 않는 한 차단된 상태로 유지되며 중단될 수 없습니다. 다음 자습서에서는 Reentrant Locks의 기본 예제를 살펴보겠습니다. 예제의 핵심은 프린터Queue 클래스의 printJob() 메서드입니다. 잠금을 사용하여 중요한 섹션을 구현하고 하나의 실행 스레드만 코드 블록을 실행하도록 보장하려면 ReentrantLock 개체를 만들어야 합니다. 임계 섹션의 시작 부분에서 lock() 메서드를 사용하여 잠금을 제어해야 합니다. 이제 동기화 된 키워드를 Java Lock API로 대체하는 간단한 예제를 살펴보겠습니다. 이 블로그에 대한 감사 판카이. 잠금 API에 대한 간략한 정보를 얻을 수 있습니다. 그것은 간단하고 좋은.

조건, ReadWriteLock 및 ReentrantLock : 이러한 각 경우에 대한 예제가있는 경우 더 유용 할 수 있습니다. 이것은 ReentrantLock, 내부 데이터 구조 및 사용되는 알고리즘에 대한 예입니다. 이 예제에서는 프로그램이 프린터의 동작을 시뮬레이션합니다. 다양한 시간 간격 또는 동시에 여러 인쇄 작업을 프린터에 제출할 수 있습니다. 프린터는 프린터 대기열에서 작업을 수행하여 인쇄합니다. 나머지 일자리는 그들의 차례를 기다릴 것입니다. 프린터가 인쇄 작업을 수행하면 대기열에서 다른 작업을 선택하고 인쇄를 시작합니다. 이 작업을 루프에서 유지합니다. 나는 위의 재진입 자물쇠 예에 의심이, 당신은 여기에 설명하려고하는 거야? 스레드 안전 doSomthing () 방법을 원하십니까? 그렇다면 동기화 / 잠금 논리는 doSomething 메서드의 클래스 내에 있어야하지 않아야합니다.

위의 예제를 통해 doSomething() 메서드의 스레드 안전성을 어떻게 보장 할 수 있습니까? 이 문서에서는 Java ReentrantLock 예제, 사용된 내부 데이터 구조 및 알고리즘의 예를 살펴보겠습니다. 이름에서 알 수 있듯이 ReentrantLock은 동일한 스레드에서 여러 번 획득할 수 있는 잠금입니다. 잠금을 획득하려는 스레드가 이미 잠금을 소유하고 있는 스레드와 같지 않으면 시도가 실패하거나 차단됩니다. 작업 범위가 지정된 경우 지정된 대기 시간이 경과하면 잠금을 획득하려는 시도가 실패합니다. ReentrantLock에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 이 문제는 스레드가 임계 섹션에 대한 액세스를 획득하지만 작업을 수행하는 데 필요한 조건이 없는 경우에 발생할 수 있습니다. 예를 들어 판독기 스레드는 여전히 사용할 데이터가 없는 공유 큐의 잠금에 액세스할 수 있습니다. ReentrantLock에 대한 설명뿐만 아니라 예제 프로그램에서 사용되는 설명이 있습니다. 자바 잠금 예제, Java의 ReentrantLock 및 동기화 된 키워드와의 비교 분석에 대한 모든 것입니다.

Posted in Bez kategorii