【Java并发编程学习】5、synchronized关键字

* Java内存模型是围绕着在并发过程中如何处理原子性、可见性、和有序性这3个特征来建立的
* 原子性(Atomicity)
*     1、由Java内存模型来直接保证的原子性变量操作包括read、load、assign、use、store和write,
*     大致可以认为基本数据类型的访问读写是具备原子性的(例外就是long和double的非原子性协定)。
*
*     2、Java内存模型还提供了lock和unlock操作来满足这种需求,尽管虚拟机未把lock和unlock操作
*     直接开放给用户使用,但是却提供了更高层次的字节码指令monitorenter和monitorexit来隐式地
*     使用这两个操作,这个两个字节码指令反映到Java代码中就是同步块--synchronized关键字,因此
*     在synchronized块之间的操作也具备原子性。
* 可见性(Visibility)
*
* 有序性(Ordering)
*
*
*  synchronized关键字说明
*  互斥同步(Mutual Exclusion & Synchronization)是常见的一种并发正确性保障手段。同步是指在多个线程并发访问共享数据时,
*  保证共享数据在同一个时刻只被一个(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critical Section)、
*  互斥量(Mutex)和信号量(Semaphore)都是主要的互斥实现方式。因此,在这4个字里面,互斥是因,同步是果;互斥是方法,同步是目的。

猜你喜欢

转载自my.oschina.net/u/3545495/blog/1814613