这是一套定义了两个操作之间的偏序关系的规则,如果操作满足以下原则就可以说他们天生就具有线程安全的特性,否则可能需要做特定的处理:
① 在一个线程内,书写在前面的操作一定先发生于后面的操作(不包括分支循环等);
② 对于同一个锁,前一个线程的unlock操作一定先行发生于后一个线程的lock操作;
③ 对于同一个volatile变量,前面的写操作一定先行发生于后面的读操作;
④ 线程的start方法先行发生于这个线程内的代码操作;
⑤ 线程的操作一定先行发生于对于线程的终止检测;
⑥ 对线程发出interrupt的操作一定先行发生于线程检测到中断事件的操作;
⑦ 对象的初始化的完成一定先行发生于其finalize方法的开始;
⑧ 如果A先行发生于B,B先行发生于C,那么可以说A先行发生于C;
虽然这些都是正确的废话。。。。。