在java并发编程中,代码如下:
1 volatile boolean asleep; 2 ... 3 while(!asleep){ 4 countSomeSheep(); 5 }
如果此处忘记将asleep变量设置为volatile类型, 那么server模式运行的jvm会将asleep的判端条件提升到循环体外部,这将导致无限循环.单是client模式下的jvm并不会这么做.
关于如何以server模式启动jvm: 启动时,指定 -server参数即可.
-- 笔记出处: java并发编程实战