多線程中的ReadWriteLock鎖問題

實現進程同步常用的是synchronized,凡是標記爲同步的方法或者對賬只會在同一時間被一個進程使用。

如果是在進行寫入或者更新一類的操作,使用synchronized即可滿足同步操作。

如果是讀寫同步的操作則沒必要互斥,可以支持多個進程同時讀取。這個就用到ReadWriteLock。加鎖方法如下

  //寫入方法方法
   public static synchronized void set(int data) {    
      rwl.writeLock().lock();// 取到寫鎖    
       System.out.println(Thread.currentThread().getName() + "準備寫入數據");    
       try {    
           Thread.sleep(20);    
       } catch (InterruptedException e) {    
           e.printStackTrace();    
       }    
      
       System.out.println(Thread.currentThread().getName() + "寫入" + data);    
   }       
   //讀取方法
   public static synchronized  void get() {    
    rwl.readLock().lock();
       System.out.println(Thread.currentThread().getName() + "準備讀取數據");    
       try {    
           Thread.sleep(20);    
       } catch (InterruptedException e) {    
           e.printStackTrace();    
       }    
       System.out.println(Thread.currentThread().getName() + "讀取" + data);    
   }    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章