java8读写锁如何使用
1、读写锁的使用环境:写写和读写需要“互斥”读读不需要互斥

3、使用ReadWriteLock控制线程安全private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();

5、使用写锁控制set()方法public void set(int number) { this.readWriteLock.writeLock().lock(); try { System.out.println(Thread.currentThread().getName()); this.number = number; }finally { this.readWriteLock.writeLock().unlock(); } }

7、整体程序代艨位雅剖码如下:package com.gwolf;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent.locks.ReentrantReadWriteLock;public class TestReadWriteLock { public static void main(String[] args) { ReadWriteLockDemo readWriteLockDemo = new ReadWriteLockDemo(); new Thread(new Runnable() { @Override public void run() { readWriteLockDemo.set((int)(Math.random()*101)); } },"Write:").start(); for(int i = 0;i< 100;i++) { new Thread(new Runnable() { @Override public void run() { readWriteLockDemo.get(); } },"Read:").start(); } }}class ReadWriteLockDemo { private int number = 0; private ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); public void get() { readWriteLock.readLock().lock(); try { System.out.println(Thread.currentThread().getName() + ":" + number); }finally { readWriteLock.readLock().unlock(); } } public void set(int number) { this.readWriteLock.writeLock().lock(); try { System.out.println(Thread.currentThread().getName()); this.number = number; }finally { this.readWriteLock.writeLock().unlock(); } }}
