Read/Write Lock
public class SomeContainer { private Set<element> elements; private ReadWriteLock globalLock; private Lock readLock; private Lock writeLock; SomeContainer() { elements = new HashSet<element>(); globalLock = new ReentrantReadWriteLock(); readLock = globalLock.readLock(); writeLock = globalLock.writeLock(); } public void addElement(Element elem) { writeLock.lock(); try { elements.add(elem); } finally { writeLock.unlock(); } } public void processElements(ElementProcessor processor) { readLock.lock(); try { Iterator<element> iter = elements.iterator(); while(iter.hasNext()) { Element element = iter.next(); processor.processElement(element); } finally { readLock.unlock(); } // ... }interface ElementProcessor { void processElement(Element element);}</element></element></element>
So, in the example above, the first line in
processElements
will let everybody play at once so long as the write lock is not held. Then, when the write lock is requested, the requesting thread will be made to wait until all existing readers are done (no further readers will be let in), and then the writer thread may begin. http://www.javalobby.com/java/forums/t45090.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception in thread main java.lang. NoClassDefFoundError 오류 해결 방법즉,/home/hadoop/jarfile) 시스템은 Hello World 패키지 아래의class라는 클래스 파일을 실행하고 있다고 오인하여 시스템의 CLASSPATH 아래 (일반적으로 현재 디렉터리를 포함) Hell...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.