首页 > 其他 > 详细

ReentrantReadWriteLock

时间:2021-03-11 17:47:28      阅读:23      评论:0      收藏:0      [点我收藏+]
  private int i = 1;

  @Test
  public void readWriteLock(){
      ReentrantReadWriteLock lock = new ReentrantReadWriteLock();


      for (int j = 0; j < 100; j++) {
          // 如果有一个线程加了读锁,别的线程是可以随意同时加读锁的,因为只是有线程在读数据而已,此时别的线程也是可以来读数据的!
          // 同理,如果一个线程加了读锁,此时其他线程是不可以加写锁的,因为既然有人在读数据,那就不能让你来随意来写数据了!
          new Thread(() -> {
              lock.readLock().lock();
              try {
              System.out.println("读中。。");
              System.out.println("content:" + i);
              System.out.println("读结束。。。");
              } finally {
                  lock.readLock().unlock();
              }
          }).start();


          //如果有一个线程加了写锁,那么其他线程就不能加写锁了,同一时间只能允许一个线程加写锁,因为加了写锁就意味着有人要写一个共享数据,那同时就不能让其他人来写这个数据了。
          //同时如果有线程加了写锁,其他线程就不能加读锁了,因为既然都有人在写数据了,你其他人当然不能来读数据了!
          new Thread(() -> {
              lock.writeLock().lock();
              try {
                  System.out.println("写中。。");
                  System.out.println("content ++i:" + ++i);
                  System.out.println("写结束。。。");
              } finally {
                  lock.writeLock().unlock();
              }
          }).start();
      }
  }

ReentrantReadWriteLock

原文:https://www.cnblogs.com/GoslingWu/p/14517676.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!