不太理解的东西:
- volatile修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
相关链接:Java并发编程:volatile关键字解析
https://www.cnblogs.com/dolphin0520/p/3920373.html
volatile变量规则:对一个变量的写操作先行发生于后面对这个变量的读操作
对于可见性,Java提供了volatile关键字来保证可见性。
当一个共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。
在Java里面,可以通过volatile关键字来保证一定的“有序性”
- transient:序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量。
- protected 和 private 不能修饰外部类,是因为外部类放在包中,只有两种可能,包可见和包不可见。