品易云推流 关闭
文章 > java基础 > java读写锁有什么用?

java读写锁有什么用?

java

头像

小妮浅浅

2021-04-09 16:57:51466浏览 · 0收藏 · 0评论

1、说明

读写锁的出现是为了提高性能,因为我们知道多读操作没有线程安全问题。然后可以允许多线程阅读,提高效率。

2、设计思路

设计两把锁,读锁和写锁。获得读锁后,只能读取数据,不能修改。获得写锁时,可以读取或修改数据。读锁可以持有多个线程,写锁只能持有一个线程。

3、实例

/**
 
 * 描述:     演示读写锁用法
 
 */
 
public class ReadWriteLockDemo {
 
    private static final ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock(false);
 
    private static final ReentrantReadWriteLock.ReadLock readLock = reentrantReadWriteLock.readLock();
 
    private static final ReentrantReadWriteLock.WriteLock writeLock = reentrantReadWriteLock.writeLock();
 
    private static void read() {
        readLock.lock();
        try {
            System.out.println(Thread.currentThread().getName() + "得到读锁,正在读取");
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            System.out.println(Thread.currentThread().getName() + "释放读锁");
            readLock.unlock();
        }
    }
 
    private static void write() {
        writeLock.lock();
        try {
            System.out.println(Thread.currentThread().getName() + "得到写锁,正在写入");
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } finally {
            System.out.println(Thread.currentThread().getName() + "释放写锁");
            writeLock.unlock();
        }
    }
 
    public static void main(String[] args) throws InterruptedException {
        new Thread(() -> read()).start();
        new Thread(() -> read()).start();
        new Thread(() -> write()).start();
        new Thread(() -> write()).start();
    }
}

以上就是java读写锁的作用,希望对大家有所帮助。更多Java学习指路:Java基础

关注公众号

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

底部广告图 底部广告图按钮