码迷,mamicode.com
首页 > 其他好文 > 详细

十五、读写锁

时间:2018-12-24 03:02:19      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:sch   tran   互斥锁   thread   read   static   代码   api   for   

一、简介

有时候我们对资源的修改操作非常地少,但是读取的频率却很高。如果采用一般的互斥锁,那么大量的读取操作也需要做等待。基于读写分离的思想,我们可以使用JDK的读写锁来处理这种情况。

1)读读不互斥;

2)读写互斥。

3)写写互斥

JDK文档地址:http://tool.oschina.net/uploads/apidocs/jdk-zh/java/util/concurrent/locks/ReentrantReadWriteLock.html

二、代码示例

import java.util.concurrent.locks.ReentrantReadWriteLock;

public class ReadWriteLockDemo {
    private static ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
    private static ReentrantReadWriteLock.ReadLock readLock = lock.readLock();
    private static ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock();

    private static void read() {
        for (int i = 0; i < 2; i++) {
            int finalI = i;
            new Thread(() -> {
                readLock.lock();
                try {
                    System.out.println("get read lock i=" + finalI);
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                readLock.unlock();
            }).start();
        }
    }

    public static void write() {
        new Thread(() -> {
            writeLock.lock();
            System.out.println("get write lock");
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            writeLock.unlock();
        }).start();
    }

    public static void main(String[] args) throws InterruptedException {
        write();
        read();
    }
}

 

十五、读写锁

标签:sch   tran   互斥锁   thread   read   static   代码   api   for   

原文地址:https://www.cnblogs.com/lay2017/p/10166536.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!