synchronized和volatile的區別是什么?


作用:

  • synchronized 表示只有一個線程可以獲取作用對象的鎖,執行代碼,阻塞其他線程。
  • volatile 表示變量在 CPU 的寄存器中是不確定的,必須從主存中讀取。保證多線程環境下變量的可見性;禁止指令重排序。
     

區別:

  • synchronized 可以作用於變量、方法、對象;volatile 只能作用於變量。
  • synchronized 可以保證線程間的有序性(猜測是無法保證線程內的有序性,即線程內的代碼可能被 CPU 指令重排序)、原子性和可見性;volatile 只保證了可見性和有序性,無法保證原子性。
  • synchronized 線程阻塞,volatile 線程不阻塞。


原文鏈接
 


 

所有資源資源匯總於公眾號



 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM