읽기 자물쇠의 실현
3409 단어 Java 기반
/**
* @author Administrator
* @date 2019/3/3
*/
public class Cache {
static Map map=new HashMap();
static ReentrantReadWriteLock rwl=new ReentrantReadWriteLock();
static Lock r=rwl.readLock();
static Lock w=rwl.writeLock();
/**
* key value
* @param key
* @return
*/
public static final String get(String key){
r.lock();
try{
System.out.println(" ,key: "+key+"---- ");
String value=map.get(key);
System.out.println(" ,key: "+key+"---- "+" value:"+value);
System.out.println();
return value;
}catch (Exception e){
return null;
}finally {
r.unlock();
}
}
/**
* key value,
* @param key
* @param value
* @return
*/
public static final void put(String key,String value){
w.lock();
try{
System.out.println(" ,key:" + key + ",value:" + value + "---- ");
Thread.sleep(1000);
map.put(key, value);
System.out.println(" ,key:" + key + ",value:" + value + "---- ");
System.out.println();
}catch (Exception e){
}finally {
w.unlock();
}
}
/**
*
*/
public static final void clear(){
w.lock();
try{
map.clear();
}finally {
w.unlock();
}
}
public static void main(String[] args){
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++){
Cache.put(i+" ",i+"");
}
}
}).start();
new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<10;i++){
Cache.get(i+" ");
}
}
}).start();
}
}
결과:
쓰기 작업 중, 키:0,value:0--쓰기 작업 시작, 키:0,value:0---끝
쓰기 시작, 키:1, value:1 --쓰기 시작, 키:1, value:1 ----끝
쓰기 작업 중, 키:2,value:2---쓰기 작업 시작, 키:2,value:2---끝
쓰기 작업 중, 키:3,value:3----쓰기 작업 시작, 키:3,value:3----끝
읽기 작업 중, 키: 0 - - - 읽기 시작 중, 키: 0 - 끝value: 0
쓰기 작업 중, 키:4,value:4----쓰기 작업 시작, 키:4,value:4----끝
쓰기 작업 중, 키:5,value:5----쓰기 작업 시작, 키:5,value:5----끝
쓰기 작업 중, 키:6,value:6----쓰기 작업 시작, 키:6,value:6----끝
쓰기 작업 중, 키:7,value:7----쓰기 작업 시작, 키:7,value:7----끝
읽기 작업 중, 키: 1 --- 읽기 작업 시작, 키: 1 --- 끝value:1
읽기 작업 중, 키: 2 - - - 시작 읽기 작업 중, 키: 2 - - 끝value: 2
읽기 작업 중, 키: 3 ----읽기 작업 시작, 키: 3 ----종료value:3
읽기 작업 중, 키: 4 --- 읽기 시작 중, 키: 4 --- 끝value: 4
읽기 작업 중, 키: 5 --- 읽기 시작 중, 키: 5 --- 끝value: 5
읽기 작업 중, 키: 6 - - - 시작 읽기 작업 중, 키: 6 - - 끝value: 6
읽기 작업 중, 키: 7 ----읽기 시작 중, 키: 7 ----종료value:7
읽기 작업 중, 키: 8 ----읽기 작업 시작, 키: 8 ----종료value:null
읽기 작업 중, 키: 9 --- 읽기 시작 중, 키: 9 --- 끝value:null
쓰기 작업 중, 키:8,value:8---쓰기 작업 시작, 키:8,value:8---끝
쓰기 작업 중, 키:9,value:9----쓰기 작업 시작, 키:9,value:9----끝
Process finished with exit code 0
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
FTP의 액티브 모드 및 패시브 모드로그인에 성공한 후list 목록이나 데이터를 읽을 때 클라이언트는 랜덤으로 하나의 포트(1024 이상)를 개방하고 포트를 FTP 서버에 보내서 서버 클라이언트에게 주동 모드를 사용하고 개방하라고 알려준다 FTP 서버...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.