规则
1. 程序执行次序规则:在一个单独的线程中,按照程序代码的顺序执行,(时间上)执行的操作happes-before(时间上) 后执行的操作
2. 管理锁定规则:一个unlock操作happens-before后面(时间上的先后顺序,下同)对同一个锁的lock操作
3. volatile变量规则:对一个volatile变量的写操作 happens-before 后面 对该volatile变量的读操作
4. 线程启动规则:线程Thread对象的start()方法 happens-before此线程的每一个动作
5. 线程终止规则:线程的所有操作都 happens-before 对此线程的终止检测;可以通过Thread.join()结束、Thread