封裝BigDecimal中的常用操作
阿新 • • 發佈:2022-04-14
概念:
讀寫鎖:存在著兩個鎖,一個讀鎖(共享鎖)
,一個寫鎖(獨佔鎖)
從文件中獲取到只有一個實現類 :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()+"寫入"