class Holder {
private int n;
public Holder(int n) { this.n = n; }
public void assertSanity() {
if (n != n)
throw new AssertionError("This statement is false.");
}
}
public class test {
public Holder holder;
public void initialize() {
holder = new Holder(42);
}
}
======================================
当再有另外一个线程B(即不同于new Holder的这个线程A)调用assertSanity,居然有可能抛出异常来。还说如果把Holder中的n标为final就可以解决,
当然,如果想B线程即时看到A线程对holder的改动,holder还是需要定为volatile的。
太神奇了,照这本书里的这些说法,公司系统里头的代码简直全是隐患啊,只是碰巧能工作,说不定啥时候就爆出个莫名其妙的问题来。
以下是书中描述的final的特殊功效。
===========================
but they also have special semantics under the Java Memory Model. It is the use of final fields that makes possible the guarantee of initialization safety (see Section 3.5.2) that lets immutable objects be freely accessed and shared without synchronization.
分享到:
相关推荐
<<java并行编程>>英文版chm格式,英文名称<Java Concurrency in Practice>,一直想买这本书,但总是缺货,找到了电子版,分享给大家。 Java Concurrency in Practice By Brian Goetz, Tim Peierls, Joshua Bloch,...
Java Concurrency in Practice 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者...
Java Concurrency in practice
java concurrency in practice
Java Concurrency in Practice源码
Java concurrency in Practice高清pdf,带目录标签,Java并发实战
Java Concurrency in Practice JAVA并发编程实践中文版(全)第二部分
正规PDF版本的 Java Concurrency In Practice。 经典著作,学习有益!
Concurrent_Programming+Java Concurrency in Practice+langspec
Java.Concurrency.in.Practice.pdf
Java并发编程实践(Java Concurrency in Practice) (中英版)
Java Concurrency in Practice
Many ofthe designations used bymanufacturersand ...appear in this book,and the publisher wasaware ofatrademark claim, the designations have been printed with initialcapitalletters or in all capitals.
java_concurrency_in_practice_source java多线程 java多线程 java多线程
java_concurrency_in_practice.pdf jcip-examples-src.jar jcip-annotations-src.jar 英文版是高清晰的,实战和实践都是同一帮人对英文版书的翻译,网传实战的翻译质量更好,实战是2012年出版的,应该是对前一版实践...
这本书很出名吧,大家都知道吧,我靠,20个字的描述咋这么累啊。
《Java Concurrency in Practice》资源代码示例,包含annotations和examples两个包的代码示例。