在多執行緒并發編程中synchronized和volatile都扮演著重要的角色,volatile是輕量級的
synchronized,它在多處理器開發中保證了共享變數的“可見性”。可見性的意思是當一個執行緒
修改一個共享變數時,另外一個執行緒能讀到這個修改的值。如果volatile變數修飾符使用恰當
的話,它比synchronized的使用和執行成本更低,因為它不會引起執行緒背景關系的切換和調度。本
文將深入分析在硬體層面上Intel處理器是如何實作volatile的,通過深入分析幫助我們正確地
使用volatile變數。
在多執行緒并發編程中synchronized一直是元老級角色,很多人都會稱呼它為重量級鎖。但
是,隨著Java SE 1.6對synchronized進行了各種優化之后,有些情況下它就并不那么重了。本文
詳細介紹Java SE 1.6中為了減少獲得鎖和釋放鎖帶來的性能消耗而引入的偏向鎖和輕量級
鎖,以及鎖的存盤結構和升級程序。
先來看下利用synchronized實作同步的基礎:Java中的每一個物件都可以作為鎖。具體表現
為以下3種形式。
·對于普通同步方法,鎖是當前實體物件。
·對于靜態同步方法,鎖是當前類的Class物件。
·對于同步方法塊,鎖是Synchonized括號里配置的物件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/107274.html
標籤:非技術區
上一篇:delphi關于串口通信報錯問題
