synchronize的用法 java中volatile和synchronize的區(qū)別和比較?
java中volatile和synchronize的區(qū)別和比較?1. Volatile是線程同步的輕量級實(shí)現(xiàn),因此Volatile的性能優(yōu)于synchronize;Volatile只能用來修改變量,s
java中volatile和synchronize的區(qū)別和比較?
1. Volatile是線程同步的輕量級實(shí)現(xiàn),因此Volatile的性能優(yōu)于synchronize;Volatile只能用來修改變量,synchronize可以用來修改方法和代碼塊。隨著JDK技術(shù)的發(fā)展,同步在執(zhí)行效率上會有很大的提高,所以同步在項目的過程中還是比較普遍的。對volatile的多線程訪問將不會阻塞;而同步將阻塞;
3。Volatile可以保證私有內(nèi)存和主內(nèi)存之間變量的同步,但不能保證變量的原子性;同步可以保證變量的原子性;
4。Volatile是多線程間變量的可見性;synchronize是多線程間訪問資源的同步;對于Volatile修改的變量,可以解決讀取時變量的可見性問題,但不能保證原子性。對于多線程訪問同一實(shí)例變量,需要鎖同步。