首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

续下篇《使用java多线程顺序打印“ABCABC”》

2012-08-28 
续上篇《使用java多线程顺序打印“ABCABC”》上篇《使用java多线程顺序打印“ABCABC”》说明了,怎样使用多线程连续

续上篇《使用java多线程顺序打印“ABCABC”》
上篇《使用java多线程顺序打印“ABCABC”》说明了,怎样使用多线程连续打印出“ABCABC”。我突然想试试如果不加锁会怎么样?加锁与不加锁的性能比又如何。

代码如下


运行第一遍时,我很奇怪的发现,竟然也能顺序打印出“ABCABC...”,难道不用加锁也可以吗?于是我尝试着输出更多的信息,比如在调用"Lock#setFlag"方法中输出当前线程名与输入的flag值,这时就发现不同了,顺序完全是混乱的。而且在运行多次时,偶尔还会发现有死锁的情况。这就说明,不加锁肯定是有潜在的问题的,即使输出的结果貌似是一样的。但是至于为什么会这样,光凭打印出的信息很难判断,需要深入到java线程的实现机制才能知道了。

至于加锁与不加锁的性能比,不加锁花的时间是加锁的5~10倍。

热点排行