1 class Data { 2 private int data;// 共享数据 3 private ReadWriteLock rwl = new ReentrantReadWriteLock(); 4 public void set(int data) { 5 rwl.writeLock().lock();// 取到写锁 6 try { 7 System.out.println(Thread.currentThread().getName() + "准备写入数据"); 8 try { 9 Thread.sleep(20); 10 } catch (InterruptedException e) { 11 e.printStackTrace(); 12 } 13 this.data = data; 14 System.out.println(Thread.currentThread().getName() + "写入" + this.data); 15 } finally { 16 rwl.writeLock().unlock();// 释放写锁 17 } 18 } 19 public void get() { 20 rwl.readLock().lock();// 取到读锁 21 try { 22 System.out.println(Thread.currentThread().getName() + "准备读取数据"); 23 try { 24 Thread.sleep(20); 25 } catch (InterruptedException e) { 26 e.printStackTrace(); 27 } 28 System.out.println(Thread.currentThread().getName() + "读取" + this.data); 29 } finally { 30 rwl.readLock().unlock();// 释放读锁 31 } 32 } 33 }