`
t225com
  • 浏览: 662081 次
文章分类
社区版块
存档分类
最新评论

Java线程同步小陷阱,你掉进去过吗?

 
阅读更多
【问题】

当一个线程使用String常量作为信号量,来实现同步会如何?你有用过吗?

上面这段代码,本来应该是要实现线程thread1和thread2同步,线程thread3和thread4同步的,但结果呢?

却是使得线程thread1、thread2、thread3、thread4同步了,囧。

导致这结果的理由很简单:由于常量池的原因,所有值为“mutex”的字符串常量,都指向了同一个对象。


这让我想起了原来看过的另一篇关于StringBuilder的文章:

作者的本意是,构造一个StringBuilder对象,初始值为“100”,但实际却是开辟了一个长度为value的char数组,如果这个value再大点。。。。。


分享到:
评论

相关推荐

    Java并发编程实战

    本书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则...

    各大IT公司面试题集合

    │ 多线程编程之四——线程的同步.txt │ 排序.txt │ 最常问问题和最佳答案.txt │ 求职信 .txt │ 深入分析Windows和Linux动态库应用异同 .txt │ 用VC++5.0 定 制 和 调 用 动 态 链 接 库 .txt │ 聘面谈记录...

    突破程序员基本功的16课.part2

    5.8 多线程的陷阱 5.8.1 不要调用run方法 5.8.2 静态的同步方法 5.8.3 静态初始化块启动新线程执行初始化 5.8.4 注意多线程执行环境 5.9 小结 第6课 流程控制的陷阱 6.1 switch语句陷阱 6.1.1 default分支...

    30天搞定Java–day20

    文章目录每日一考和复习Java常用类字符串相关的类String类String的特性String陷阱String常用方法String和其他类型转换StringBuffer类、StringBuilder类StringBuffer的常用方法效率对比JDK 8之前的日期时间API ...

    Linux多线程服务端编程:使用muduo C++网络库

    第2章线程同步精要 2.1互斥器(mutex). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.1.1只使用非递归的mutex . . . . . . . . . . . . . .. . . . . . . . . . 33 2.1.2死锁. . . . . . . ....

    汪文君高并发编程实战视频资源全集

    │ 高并发编程第一阶段28讲、线程生产者消费者的综合实战结合Java8语法.mp4 │ 高并发编程第一阶段29讲、如何实现一个自己的显式锁Lock精讲上.mp4 │ 高并发编程第一阶段30讲、如何实现一个自己的显式锁Lock精讲...

    汪文君高并发编程实战视频资源下载.txt

    │ 高并发编程第一阶段28讲、线程生产者消费者的综合实战结合Java8语法.mp4 │ 高并发编程第一阶段29讲、如何实现一个自己的显式锁Lock精讲上.mp4 │ 高并发编程第一阶段30讲、如何实现一个自己的显式锁Lock精讲...

    软件框架设计的艺术

    11.3.2 Java Monitors中的陷阱 193 11.3.3 触发死锁的条件 196 11.3.4 测试死锁 201 11.3.5 对条件竞争进行测试 204 11.3.6 分析随机故障 206 11.3.7 日志的高级用途 208 11.3.8 使用日志记录...

Global site tag (gtag.js) - Google Analytics