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

并发-Effective Java的一小段代码

2012-09-03 
并发--Effective Java的一小段代码if(!stopRequested) {while(true){i++}},这种情况,backgroundThread线

并发--Effective Java的一小段代码

          if(!stopRequested) {                while(true){                    i++;                }           }


,这种情况,backgroundThread线程永远不会结束。

为了避免以上两种情况,可以用volatile修饰stopRequested,这样每个线程在修改stopRequested后都会把修改结果同步到主内存,每个线程在读取stopRequested时都会从主内存中获取;volatile同时也阻止了jvm对第二种情况的优化

建议细看: 《java并发编程实践》

注:
在不加 volatile修饰, 把i++改成System.out.println("t"); 的情况下, 使用-server, -client参数都会在1秒后退出.

在windows下,jvm默认是client模式, 在linux下默认是 server模式.

参考:
Java线程安全兼谈DCL
用happen-before规则重新审视DCL

热点排行