Serializable序列化
serialVersionUID运行时判断类的serialVersionUID来验证版本的一致性;
serialVersionUID不一致,会报invalidClassException;
serialVersionUID一致,缺少字段不处理,多余字段会赋默认值;
如果不显式的设置serialVe
...
一个类在多线程环境下始终表现出正确的行为
对象内无任何域,无其他对象的引用,无状态对象是线程安全的
由于不恰当的执行时序导致不正确的结果
一个线程修改了对象状态,其他线程能够看到这个变化
没有同步的情况下,底层会对执行顺序进行调整
New(创建线程未start)、Runnable(start但未分配CPU)、Running、Blocked(阻塞让出CPU时间)、waiting(等待)
避免使用同步,仅在单线程内访问数据的方式: 局部变量和ThreadLocal
某个线程试图获取自己持有的锁,请求可以成功
线程安全实现围绕三个特性进行解决,原子性、可见性、有序性
1、线程安全类
2、无状态对象、线程封闭 (不共享资源)
3、原子类 atomic包 (原子性)
4、volatile (可见性,volatile变量修改后会刷新到主存中,有序性,volatile会通知低层禁止重排序)
5、使用并发集合ConcurrentHashMap
6、同步机制(原子性)