本文最后更新于50 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
如果多个线程对同一个共享数据进行访问而不采取同步操作,那么操作的结果是不一致的,这就不是线程安全的
为什么会出现线程不安全问题?
因为:
- 线程操作没有可见性:一个线程对共享变量的修改,另一个线程是不能立刻看到的;
- 线程操作没有原子性(原子性:一个或多个操作,要么全部执行且执行过程中没有被任何因素打断,要么全都不执行)。
- 为了提高程序执行的性能,编译器和处理器常常会对指令进行重排序(即程序执行顺序不会按照代码先后顺序执行)