ReadWriteLock维护了一对锁,读锁可允许多个读线程并发使用,写锁是独占的。下面通过一个简单的例子来了解ReadWriteLock。 1 package com.ccfdod.juc; 2 3 import java.util.concurrent.locks.Read ...
ReadWriteLock维护了一对锁,读锁可允许多个读线程并发使用,写锁是独占的。
下面通过一个简单的例子来了解ReadWriteLock。
1 package com.ccfdod.juc; 2 3 import java.util.concurrent.locks.ReadWriteLock; 4 import java.util.concurrent.locks.ReentrantReadWriteLock; 5 6 /** 7 * 写写/读写,需要互斥 8 * 读读,不需要互斥 9 */10 public class TestReadWriteLock {11 12 public static void main(String[] args) {13 ReadWriteLockDemo rw = new ReadWriteLockDemo();14 new Thread(new Runnable() {15 16 @Override17 public void run() {18 rw.set((int) (Math.random() * 101));19 }20 21 }, "Write:").start();22 23 for (int i = 0; i < 100; i++) {24 new Thread(new Runnable() {25 26 @Override27 public void run() {28 rw.get();29 }30 31 }, "Read:").start();32 }33 }34 }35 36 class ReadWriteLockDemo {37 38 private int number = 0;39 40 private ReadWriteLock lock = new ReentrantReadWriteLock();41 42 //读43 public void get() {44 lock.readLock().lock(); //上锁45 try {46 System.out.println(Thread.currentThread().getName() + " : " + number);47 } finally {48 lock.readLock().unlock(); //释放锁49 }50 }51 52 //写53 public void set(int number) {54 lock.writeLock().lock(); //上锁55 try {56 System.out.println(Thread.currentThread().getName());57 this.number = number;58 } finally {59 lock.writeLock().unlock(); //释放锁60 }61 }62 }
原标题:ReadWriteLock读写锁
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。