如果一个资源可以被多个线程持有或者访问,那么该资源就可称为共享资源,而对于共享资源如果不采取同步措施将会产生线程安全问题。
    举个例子,假设现在有一个共享变量count,此时值为1,而后线程A读取这个值,没问题是准确的;在这个期间线程B也读取了count,读取到的也是1,也没问题;接着线程A将count+1写入,此时count应该为2了,但很明显B还不知道,B也是将count+1写入,但很明显共享变量count的值还是2,尽管这进行了两次增加操作。
    在 Java 中一条语句会被拆分成几条字节码指令在JVM中运行,那么如果在此期间发生了线程上下文切换,导致读写指令交错执行,就会导致共享资源的读取写入不正确,出现线程安全问题。