全的主要来源于JMM的设计,主要集中在主内存和线程的工做内存而致使的内存可见性问题,以及重排序致使的问题,进一步知道了happens-before规则。线程运行时拥有本身的栈空间,会在本身的栈空间运行,若是多线程间没有共享的数据也就是说多线程间并无协做完成一件事情,那么,多线程就不能发挥优点,不能带来巨大的价值。那么共享数据的线程安全问题怎样处理?很天然而然的想法就是每个线程依次去读写这个共享变量,这样就不会有任何数据安全的问题,由于每一个线程所操做的都是当前最新的版本数据。那么,在java关键字synchronized就具备使每一个线程依次排队操做共享变量的功能。很显然,这种同步机制效率很低,但synchronized是其余并发容器实现的基础,对它的理解也会大大提高对并发编程的感受,从功利的角度来讲,这也是面试高频的考点。好了,下面,就来具体说说这个关键字java