本文共 534 字,大约阅读时间需要 1 分钟。
在读写锁中,初试状态下owner为null,writecount和readwrite都为0。当写操作去争抢锁的时候,先去判断readcount是否为0,为0则再去判断writecount;
读操作的时候,先去判断writecount是否为0,为0则直接去进行读操作,readcount加1;如果锁已经被占有,则进入等待队列。
维护一对关联锁,一个只用于读操作,一个只用于写操作;读锁可以由多个读线程同时持有,写锁是排他的。同一时间,两把锁不能被不同线程持有。
适合读取操作多于写入操作的场景,改进互斥锁的性能,比如:集合的并发线程安全性改造、缓存组件。
指的是写锁降级称为读锁。持有写锁的同时,再获取读锁,随后释放写锁的过程。写锁是线程独占,读锁是共享,所以写—>读是降级。(读—>写,是不能实现)
转载地址:http://kqugn.baihongyu.com/