美文网首页
ReentrantReadWriteLock读写锁

ReentrantReadWriteLock读写锁

作者: 12点前睡觉hhh | 来源:发表于2019-05-31 10:02 被阅读0次

读写锁允许同一时刻被多个线程访问,但是在写线程访问时,所有的读线程和其他的写线程都会被阻塞 。比如线程A1,A2,A3进行写操作,线程B1,B2,B3进行读操作,如果使用重入锁或者内部锁,所有读之间,读写之间,写写之间都是串行操作,而使用读写锁的话,允许多个线程同时读。



读写锁的使用:

public class ReadWriteLockDemo {
    private static ReentrantReadWriteLock readWriteLock=new ReentrantReadWriteLock();
    private static Lock readLock=readWriteLock.readLock();
    private static Lock writeLock=readWriteLock.writeLock();
    private int value;

    public int handleRead(Lock lock) throws InterruptedException {
        try {
            lock.lock();
            Thread.sleep(1000);//模拟读操作,将其耗时放大
            return value;
        }finally {
            lock.unlock();
        }
    }
    public void handleWrite(Lock lock,int index) throws InterruptedException {
        try{
            lock.lock();
            Thread.sleep(1000);
            value=index;
        }finally {
            lock.unlock();
        }
    }
    
}

相关文章

网友评论

      本文标题:ReentrantReadWriteLock读写锁

      本文链接:https://www.haomeiwen.com/subject/bifvtctx.html