导航

java中使用读写锁

Posted on 2017-09-21 17:44  天一涯  阅读(546)  评论(0)    收藏  举报
 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 }