我有一个类有 2 种方法,读取方法和写入方法。我希望多线程可以访问读取方法,并且只有 1 个线程可以访问读取方法。并且当写入方法被访问时,读取方法将被阻塞。我该怎么做?
注意:在阅读了我为此编写了一小段代码的答案后,我使用了并发包锁。
public class ConcurrentLock {
private Lock wLock = new Lock();
private Lock rLock = new Lock();
private int i;
public static void main(String[] args){
}
public int Read(){
try {
rLock.lock();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
rLock.unlock();
}
return i;
}
public void Write(){
try {
wLock.lock();
rLock.lock();
++i;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
wLock.unlock();
rLock.unlock();
}
}
}