자바 5 이전에, 내가 쓴 것 일 :
// pre Java 5 code:
Object lock = new Object();
// ...
synchronized(lock) {
// do something that requires synchronized access
}
그러나 자바 5, 나는 java.util.concurrent.locks
(에서 클래스를 사용하는 것 때문에 개인적으로, 나는 이것이 더 복잡하거나 오류가 발견하지 않습니다 -prone) :
private ReadWriteLock rwl = new ReentrantReadWriteLock();
private Lock rLock = rwl.readLock();
private Lock wLock = rwl.writeLock();
private List<String> data = new ArrayList<String>();
public String getData(int index) {
rLock.lock();
try {
return data.get(index);
} finally {
rLock.unlock();
}
}
public void addData(int index, String element) {
wLock.lock();
try {
data.add(index, element);
} finally {
wLock.unlock();
}
}
: 당신이 잠금 읽기 - 쓰기가 필요한 경우
// Java 5 Code Using Locks
Lock lock = // ...
lock.lock();
try {
// do something that requires synchronized access
}
finally {
lock.unlock();
}
, 여기에 자바 5에서 읽기 - 쓰기 잠금을 사용하여 구현 예이다
물론 필요에 맞게 수정하십시오.
새로운 수업에 추가하면 도움이 될 수 있으므로 원하는 것을 명확히하는 데 도움이 될 수 있습니다. 그러나 스레드 안전성에 전혀 영향을 미치지 않습니다. 나는 명시 적 잠금 (아래)을 사용하는 대답을 좋아한다. –