1.引发线程安全问题的常见两种情况:
- a. 代码中有i++,即“读—改—写”
- b.if(mac!=null) new Mac() ,即“检查—执行”
2.使用同步机制避免上述线程安全问题:
- a. java中具体用synchronized关键字阻塞线程。(会有性能问题)
- b.确保操作原子化,但同时注意,多个原子化的操作组合起来不一定是线程安全的。
- c.synchronized块为内部锁,至多只有一个线程可以拥有锁,同一时间,只能有一个线程可以运行特定锁保护的代码块。
3.synchronized作用:
- a. 使操作原子化。
- b.内存可见性:指当一个线程修改了对象状态后,另一个线程能真正看到内存的改变。