两个函数,一个是读,一个是写。要求写保持同步,在写操作进行时,不可以进行读操作。我的解决方法是: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//专门放后面
}小弟初学,请都大虾这种写法行不行?

解决方案 »

  1.   

    有个玩意儿叫  java.util.concurrent.locks.ReadWriteLock
    专门处理这种情况的new 一个java.util.concurrent.locks.ReentrantReadWriteLock (上面ReadWriteLock的实现类)
    然后分别得到 readLock()和writeLock();读操作时,使用readLock()返回的锁,
    写操作时,使用writeLock()返回的锁可以保证:写操作和写操作,写操作和读操作,是同步的。 读操作和读操作,是并发的