Java并发【Synchronized】

       使用场景:不论什么时候,只要您将编写的变量接下来可能被另一个线程读取,或者您将读取的变量最后是被另一个线程写入的,那么您必须进行同步。Java同步机制大概可以分为三种,synchronized和volatile;ReentrantLock和Condition;和automic和concurrent包下具有原子性操作的类。

 

1.synchronized和volatile

 

volatile修饰符,表示变量每次读取和修改时候都从主内存中进行,不会进行产生脏读。volatile修饰基本数据类型,对于涉及到自身的操作并不是原子的,可能出现问题,例如i++,i=i+1;原子操作例如i=j+1,不会产生线程安全问题。

synchorized可以解决多线程之间的线程安全问题,首先获取操作对象的锁,然后将涉及变量的线程拷贝与主内存拷贝强制同步,执行代码块,然后再将变量写会到堆内存,最后释放操作对象锁。

参考文章:http://sakyone.iteye.com/blog/668091

 

 

你可能感兴趣的:(synchronized)