zoukankan      html  css  js  c++  java
  • 读写锁(ReadWriteLock)

      为了提高性能,Java提供了读写锁,读写锁分为读锁和写锁。多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥,这是由JVM控制的。如果没有写锁的情况下,读是无阻塞的,在一定程度上提高了程序的执行效率。

    读锁

      如果你的代码只读数据,可以很多人同时读,但不能同时写,那就上读锁。

    写锁

      如果你的代码修改数据,只能有一个人在写,且不能同时读取,那就上写锁。总之,读的时候上读锁,写的时候上写锁。

    Java中读写锁有个接口,java.util.concurrent.locks.ReadWriteLock,也有具体的实现ReentrantReadWriteLock。

    代码示例:

     1 public class TestReadWriteLock {
     2     public static void main(String[] args) {
     3         ReadWriteLockDemo rw = new ReadWriteLockDemo();        
     4         new Thread(new Runnable() {            
     5             public void run() {
     6                 rw.set((int)(Math.random() * 101));
     7             }
     8         }, "Write:").start();
     9         for (int i = 0; i < 100; i++) {
    10             new Thread(new Runnable() {
    11                 public void run() {
    12                     rw.get();
    13                 }
    14             }).start();
    15         }
    16     }
    17 }
    18 class ReadWriteLockDemo{
    19     private int number = 0;
    20     private ReadWriteLock lock = new ReentrantReadWriteLock();
    21     //
    22     public void get(){
    23         lock.readLock().lock(); //上锁
    24         try{
    25             System.out.println(Thread.currentThread().getName() + " : " + number);
    26         }finally{
    27             lock.readLock().unlock(); //释放锁
    28         }
    29     }
    30     //
    31     public void set(int number){
    32         lock.writeLock().lock();
    33         try{
    34             System.out.println(Thread.currentThread().getName());
    35             this.number = number;
    36         }finally{
    37             lock.writeLock().unlock();
    38         }
    39     }
    40 }
  • 相关阅读:
    (五)TortoiseSVN 客户端-----安装
    (四)svn 服务器端的使用之创建工程目录
    (三)svn 服务器端之创建仓库
    (二)svn服务端安装配置
    (一)svn介绍
    JFinal常量配置学习笔记
    继承、多态、重载和重写
    聊聊基本类型(内置类型)
    日期和时间的处理
    设计模式——享元模式
  • 原文地址:https://www.cnblogs.com/HuiH/p/11910889.html
Copyright © 2011-2022 走看看