java concurrency in practice 读书笔记-java内存储器模型
java concurrency in practice 读书笔记--java内存模型什么是内存模型?为什么需要它?假设一个线程为变量aV
java concurrency in practice 读书笔记--java内存模型
什么是内存模型?为什么需要它?
假设一个线程为变量aVariable赋值:
程序次序法则:如果在程序中,所有动作 A 出现在动作 B 之前,则线程中的每动作 A 都 happens-before 于该线程中的每一个动作 B。监视器锁法则:对一个监视器的解锁 happens-before 于每个后续对同一监视器的加锁。Volatile 变量法则:对 Volatile 域的写入操作 happens-before 于每个后续对同一 Volatile 的读操作。线程启动规则:在线程上对Thread.start()的调用必须在该线程中执行任何操作之前执行。线程结束规则:线程中的任何操作都必须在其他线程检测到该线程已经结束之前执行,或者从Thread.join中成功返回,或者在调用Thread.alive是返回false中断规则:当一个线程在另一个线程上调用interrupt时,必须在被中断线程检测到interrupt调用之前执行终结器规则:对象的构造函数必须在启动该对象的终结器之前执行完成。传递性:如果 A happens-before 于 B,且 B happens-before C,则 A happens-before C。
参考文献:《Java concurrency in practice》第16章 IBM develperWorks文档