1. 程式人生 > 其它 >OpenHarmony 3.1 Beta版本關鍵特性解析——OpenHarmony圖形框架

OpenHarmony 3.1 Beta版本關鍵特性解析——OpenHarmony圖形框架

ReadWriteLock讀寫鎖

概念:

 

讀寫鎖:存在著兩個鎖,一個讀鎖(共享鎖),一個寫鎖(獨佔鎖)

從文件中獲取到只有一個實現類 :ReentrantReadWriteLock

程式碼實現

/**獨佔鎖(讀鎖):
* 共享鎖(寫鎖):
* */
public class ReadWriteLockTest {
   public static void main(String[] args) {
     // MyLock myLock = new MyLock();
       MyLock2 myLock = new MyLock2();
       //只進行寫入操作
       for (int i =1; i <=5 ; i++) {
           final int temp=i;
           new Thread(()->{
               myLock.Put(temp+"",temp+"");
          },String.valueOf(i)).start();
      }
       //只進行讀取操作
       for (int i = 1; i <=5 ; i++) {
          final int temp=i;
           new Thread(()->{
               myLock.Get(temp+"");
          },String.valueOf(i)).start();
      }
  }
}
//自定義快取
class MyLock{
    private volatile Map<String , Object> map = new HashMap();
               //寫入操作 ,
            public void Put(String key ,Object value){
                System.out.println(Thread.currentThread().getName()+"寫入"+key);
                map.put(key , value);
                System.out.println(Thread.currentThread().getName()+"寫入OK");

            }
               //讀取操作
           public void Get(String key){
               System.out.println(Thread.currentThread().getName()+"讀取"+key);
                        map.get(key);
               System.out.println(Thread.currentThread().getName()+"讀取OK");
          }
}

//加入ReadWriteLock(讀寫鎖)進行操作
class  MyLock2{
   private volatile Map<String , Object> map = new HashMap();
   //讀寫鎖
    private ReadWriteLock readWriteLock = new ReentrantReadWriteLock();

   //寫入操作 ,
   public void Put(String key ,Object value){
       //加入寫鎖(獨佔鎖),只能有一個執行緒進行寫入
       readWriteLock.writeLock().lock();
       try {
           System.out.println(Thread.currentThread().getName()+"寫入"+key);
           map.