两个函数,一个是读,一个是写。要求写保持同步,在写操作进行时,不可以进行读操作。我的解决方法是:
import java.util.concurrent.locks.ReentrantLock;
final ReentrantLock lock = new ReentrantLock();
void write()
{
try{
lock.lock();
...write code
}
finally{
lock.unlock();
}
}
void read()//我的思想是:如果其它线程写操作正在进行中,则这里读取被阻塞。否则随即释放锁,因为读和读之间无需同步。
{
try{
lock.lock();
}
finally{
lock.unlock();
}
...read code//专门放后面
}
小弟初学,请都大虾这种写法行不行?
------解决方案--------------------------------------------------------
有个玩意儿叫 java.util.concurrent.locks.ReadWriteLock
专门处理这种情况的
new 一个java.util.concurrent.locks.ReentrantReadWriteLock (上面ReadWriteLock的实现类)
然后分别得到 readLock()和writeLock();
读操作时,使用readLock()返回的锁,
写操作时,使用writeLock()返回的锁
可以保证:写操作和写操作,写操作和读操作,是同步的。 读操作和读操作,是并发的