线程安全
当多个线程访问一个对象时,如果不用考虑这些线程在运行时的交替执行和调度,也不需要进行额外的同步或者在调用方法时进行其他的协调工作,调用这个对象的行为都可以得到正确结果,那这个对象是线程安全的。
三大安全问题
- a++读写
- 死锁
- 对象发布和初始化
- 方法返回一个private对象
- 还未完成初始化就把对象提供给外面
- 在构造函数中未初始化完毕就this赋值
- 隐式溢出----注册监听事件
- 构造函数中运行线程
线程性能问题
上下问切换
- 挂起一个线程,将这个线程在cpu中的状态(上下文)存储于某处
- 在内存中检索下一个线程的上下文并将其在cpu中恢复
- 跳转到程序技术器的位置恢复该线程
频繁的IO和锁竞争造成了阻塞。导致上下文频繁的切换。缓存失效。
内存同步
Java内存模型JMM
可以看大神的总结
https://naotu.baidu.com/file/07f437ff6bc3fa7939e171b00f133e17?token=6744a1c6ca6860a0