synchronized和volatile的區別

2021-10-08 13:12:48 字數 398 閱讀 3772

volatile關鍵字的本質是告訴jvm,該變數在暫存器中的值是不確定的,需要在主存中讀取,而synchronized關鍵字是鎖住當前變數,只有當前執行緒可以訪問,其他執行緒等待。volatile關鍵字的作用:保證變數的可見性和防止指令重排序。

1. volatile只能作用於變數,而synchronized可以作用於變數、方法和**塊

2. 多執行緒訪問volatile不會發生阻塞,而synchronized關鍵字可能發生阻塞。

3. volatile能夠保證資料的可見性,就是在多個執行緒之間是可見的,不能保證原子性,而synchronized關鍵字都可以保證。

4. volatile關鍵字主要解決的是多個執行緒之間的可見性,而synchronized關鍵字保證的是多個執行緒訪問資源的同步性。

Servlet Biz Dao和Vo關係描述

servlet是伺服器 biz是business 業務邏輯的簡稱 dao是data access objects 資料訪問物件的簡稱 v0是value object值物件的簡稱 根據上面的流程圖可以了解servlet biz dao和vo之間基本的關係。1 首先是jsp檔案 就是我們看到的網頁 通過...

synchronized和volatile的區別?

一旦乙個共享變數 類的成員變數 類的靜態成員變數 被volatile修飾之後,那麼就具備了兩層語義 1 保證了不同執行緒對這個變數進行操作時的可見性,即乙個執行緒修改了某個變數的值,這新值對其他執行緒來說是 立即可見的。2 禁止進行指令重排序。volatile本質是在告訴jvm當前變數在暫存器 工作...

VO變數物件

js原理 原型鏈 執行上下文 事件迴圈 棧 棧是類似於陣列的一種資料結構。物件引用 如果變數是乙個物件,實際上變數中存放的是物件的位址 執行上下文 某個函式或全域性 的執行環境,該環境中包含執行 需要的所有資訊。可以簡單的理解為 執行上下文是乙個物件,物件中包含了執行 需要的資訊。當執行乙個函式時,...