avatar

目录
可重入锁

今天在写代码的时候遇到了一个问题,线程拥有一个方法class的锁后 又再次申请已经拥有的class对象的锁,会不会进去呢,结论 可以进去,但不知道因为什么,查了一下发现这个涉及 可重入锁的这么一个概念,学习一下。

相关代码

Code
1
2
3
4
5
6
7
8
9
10
private static void initValidation(){
if( ! initFlag ){
synchronized (PinyinUtil.class) {
if (!initFlag) {
initPinyinMap();
initFlag = true;
}
}
}
}
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private static void initPinyinMap(){
Properties dic = new Properties();
//从类路径下 加载拼音字典
try(BufferedReader in = new BufferedReader( new InputStreamReader( PinyinUtil.class.getClassLoader().getResourceAsStream("pinyin/PinYinDic.mapping"),"utf-8") )) {
dic.load(in);
} catch (IOException e) { throw new QRuntimeException("加载拼音字典文件失败"); }
Map dicMap = new HashMap( (Map)dic );
if(!dicMap.isEmpty()){//是否读取到拼音字典内容
synchronized (PinyinUtil.class){// 此处
pinyinMap.clear();
pinyinMap.putAll(dicMap);
}
}
}

知识

http://www.cnblogs.com/cielosun/p/6684775.html

文章作者: 美式不加糖
文章链接: http://yoursite.com/2020/02/04/%E5%8F%AF%E9%87%8D%E5%85%A5%E9%94%81/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 湖畔小屋
打赏
  • 微信
    微信
  • 支付寶
    支付寶