Lock介面的三個實現類

2021-09-27 02:50:44 字數 1228 閱讀 6100

一.reentrantlock(可重入鎖)

即可重入鎖。

具體可看:

例:

class clerk  catch (interruptedexception e) 

}system.out.println(thread.currentthread().getname() + ":" + (++product));

condition.signalall();//沒滿就可以進貨

}finally

}public void sell() catch (interruptedexception e)

}system.out.println(thread.currentthread().getname() + ":" + (--product));

condition.signalall();//不缺貨就可以賣

}finally

}}

二.reentrantreadwritelock類中的靜態內部類readlock(讀-寫鎖)

與互斥鎖定相比,讀-寫鎖定允許對共享資料進行更高階別的併發訪問。雖然一次只有乙個線(writer 執行緒)可以修改共享資料,但在許多情況下,任何數量的執行緒可以同時讀取共享資料(reader 執行緒)。從理論上講,與互斥鎖定相比,使用讀-寫鎖定所允許的併發性增強將帶來更大的效能提高。

寫寫/讀寫需要互斥,讀讀不需要互斥。

三.reentrantreadwritelock類中的靜態內部類writelock(讀-寫鎖)

與互斥鎖定相比,讀-寫鎖定允許對共享資料進行更高階別的併發訪問。雖然一次只有乙個線(writer 執行緒)可以修改共享資料,但在許多情況下,任何數量的執行緒可以同時讀取共享資料(reader 執行緒)。從理論上講,與互斥鎖定相比,使用讀-寫鎖定所允許的併發性增強將帶來更大的效能提高。

寫寫/讀寫需要互斥,讀讀不需要互斥。

例:

public class testreadwriterlock 

},"write:").start();

for (int i = 0;i<100;i++)

}}class readwriterlockdemofinally

}//寫(一次只能有乙個執行緒操作)

public void set(int number)finally

}}

參考:

List集合介面下的三個實現類

底層採用陣列儲存元素,具有高效的查詢效率,但是增刪效率低。一般我們採用多型的方式建立集合,但是arraylist因為是實現類所以也可以建立。arraylist集合中的方法與其父介面list差不多相同。下面是使用arraylist集合的案例 去除arraylist集合中重複元素。因為list集合特點是...

list,set,map三種介面的實現類

一,集合框架的體系結構 二,實現類 1 arraylist 底層由陣列實現 元素有序且可以重複 可以動態增長 以滿足應用程式的需求 元素值可以為null 2 hashset 元素無序並且不可以重複 只允許乙個null元素 3 hashmap 鍵不能重複 允許使用null值和鍵 hashmap中的en...

Set介面的實現類

set是一種不包括重複元素的collection。它維持它自己的內部排序,所以隨機訪問沒有任何意義。與list一樣,它同樣執行null的存在但是僅有乙個。由於set介面的特殊性,所有傳入set集合中的元素都必須不同,同時要注意任何可變物件,如果在對集合中元素進行操作時,導致e1.equals e2 ...