* 不要以字符串常量作为锁定对象
* 在下面的例子中,m1和m2其实锁定的是同一个对象
* 这种情况下会发生比较诡异的现象,比如你用到了一个类库,在该类库中代码锁定了字符串“hello”
* 但是你读不到源码,所以你也在代码中锁定了“hello”,这时候就有可能发生特别诡异的死锁阻塞
* 因为你的程序和类库不经意间使用到了同一把锁

jetty曾遇到过类似的锁问题。

public class StringNotUse {/*** 不要以字符串常量作为锁定对象* 在下面的例子中,m1和m2其实锁定的是同一个对象* 这种情况下会发生比较诡异的现象,比如你用到了一个类库,在该类库中代码锁定了字符串“hello”* 但是你读不到源码,所以你也在代码中锁定了“hello”,这时候就有可能发生特别诡异的死锁阻塞* 因为你的程序和类库不经意间使用到了同一把锁*/String s1 = "hello";String s2 = "hello";void m1(){synchronized (s1){}}void m2(){synchronized (s2){}}}

Java并发编程--不要使用字符串常量作为synchronized锁对象相关推荐

  1. Java并发编程(7):使用synchronized获取互斥锁的几点说明

    在并发编程中,多线程同时并发访问的资源叫做临界资源,当多个线程同时访问对象并要求操作相同资源时,分割了原子操作就有可能出现数据的不一致或数据不完整的情况,为避免这种情况的发生,我们会采取同步机制,以确 ...

  2. Java并发编程实战————可重入内置锁

    引言 在<Java Concurrency in Practice>的加锁机制一节中作者提到: Java提供一种内置的锁机制来支持原子性:同步代码块."重入"意味着获取 ...

  3. Java并发编程实战 第13章 显式锁

    接口Lock的实现类: ReentrantLock, ReentrantReadWriteLock.ReadLock, ReentrantReadWriteLock.WriteLock Reentra ...

  4. java并发编程实战学习笔记之基础知识与对象的共享

    第二章:线程安全性 2.1 什么是线程安全性 可以被多个线程调用,并且在线程之间不会出现错误的交互 方法内的局部变量不需要保护,因为它存储在栈中,是每个线程独有的 2.2 原子性 一个共享变量可以定义 ...

  5. 【Java并发编程】并发编程大合集

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17539599 为了方便各位网友学习以及方便自己复习之用,将Java并发编程系列内容系列内容 ...

  6. 我肝了2个月,为你整理了Java并发编程手册

    从原理到实战,全面讲解Java并发编程核心知识,你值得拥有的Java并发编程手册. 如何看待程序员35岁职业危机? Java全套学习资料(14W字),耗时半年整理 我肝了三个月,为你写出了GO核心手册 ...

  7. Java并发编程的学习

    转载出处:http://blog.csdn.net/ns_code/article/details/17539599 为了方便各位网友学习以及方便自己复习之用,将Java并发编程系列内容系列内容按照由 ...

  8. Java并发编程面试题(2020最新版)

    转载自  Java并发编程面试题(2020最新版) 基础知识 并发编程的优缺点 为什么要使用并发编程(并发编程的优点) 充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到 ...

  9. 【2022最新Java面试宝典】—— Java并发编程面试题(123道含答案)

    目录 一.基础知识 1. 为什么要使用并发编程 2. 多线程应用场景 3. 并发编程有什么缺点 4. 并发编程三个必要因素是什么? 5. Java 程序中怎么保证多线程的运行安全? 6. 并行和并发有 ...

最新文章

  1. 配置文件没有关闭保护模式_配置文件:PS自带的海量滤镜 | 照片调色宝典13
  2. Java中instanceof用法
  3. 广告中oCPX到底是如何进行优化的
  4. android默认获取敏感权限
  5. weblogic启动项目报错找不到类_启动类报错是经常出现的事但是单一的从一个地方找原因会越找越错...
  6. 资源征集 | 2021年全国知识图谱与语义计算大会开放资源征集(Resource Track)通知...
  7. ajax hacking,Ajax Hacking
  8. PPT达人速成记 WPS三步打造演示母版
  9. 单片机牛人的学习经历
  10. RocketMQ事务消息学习及刨坑过程
  11. 教你从零开始成为优秀交互设计师(一):交互设计师修炼指南
  12. TP6 自定义404,错误提示页面
  13. ID Ransomware帮你识别到底中了什么勒索软件
  14. C/C++教程 第一章 —— 初识C/C++
  15. 适合于图像处理方向的SCI/EI期刊杂志列表
  16. 如何进行 Linux 服务器安全维护
  17. 深入分析C#中的异步和多线程
  18. HPET(High Precision Event Timer)简要说明
  19. 使用FMDB进行数据库操作
  20. python之变量类型

热门文章

  1. 【NLP】Transformer及其变种
  2. 三个Python入门小项目
  3. 眼界大开 声临其境丨胡宜峰:视频深度伪造检测技术在内容安全领域的探索与实践
  4. 云信小课堂|搭建应用级别在线聊天室,7步就够了!
  5. LeetCode_数组_简单题
  6. javascript中 this 指向问题
  7. 冲刺第六天 1.7 MON
  8. 最后8小时 | 最新智能驾驶视觉技术行业研究报告出炉!圈内从业者、投资人不可错过...
  9. 回归专题 | regression
  10. VS2010 SP1