一.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 ...