首頁 Java java教程 synchronized與static synchronized 的區別

synchronized與static synchronized 的區別

Dec 13, 2016 am 11:18 AM
synchronized

 1.synchronized與static synchronized 的區別
      synchronized是對類的當前實例進行加鎖,防止其他線程同時訪問該類的該實例的所有synchronized塊,這裡是“類的當前實例”, 類的當前實例不同實例就沒有這種約束了。那麼static synchronized恰好就是要控制類別的所有實例的存取了,static synchronized是限制執行緒同時存取jvm中該類別的所有實例同時存取對應的程式碼快。實際上,在類別中某方法或某程式碼區塊中有synchronized,那麼在產生一個該類別實例後,改類別也就有一個監視快,放置執行緒並發存取改實例synchronized保護快,而static synchronized則是所有此類的實例公用一個監視快了,也也就是兩個的區別了,也就是synchronized相當於this.synchronized,而
static synchronized相當於Something.synchronized.
     執行長
         public static synchronized void cSyncA(){}
         public static synchronized void cSyncB(){}
     }
   那麼,加入兩個有Something類別的實例a與b,下列群組方法何以被1個以上執行緒同時存取呢
   a.   x.isSync()與x.isA()與x.is b.   x.isSyncA()與y.isSyncA()
   c.   x.cSyncA()與y.cSyncB()
   d.   x.isSyncA()與Something.cSyn  d.   x.
   a,都是對同一個實例的synchronized域訪問,因此不能被同時訪問
   b,是針對不同實例的,因此可以同時被訪問
   c,因為是static synchronized,所以不同實例之間仍然會被限制,相當於Something.isSyncA()與   Something.isSyncB()了,因此不能被同時訪問。
   那麼,第d呢?,書上的 答案是可以被同時訪問的,答案理由是synchronzied的是實例方法與synchronzied的類方法由於鎖定(lock)不同的原因。
   個人分析也就是synchronized 與static synchronized 相當於兩幫派,各自管各自,相互之間就無約束了,可以被同時訪問。目前還不是分清楚java內部設計synchronzied是怎麼樣實現的。


    結論:A: synchronized static是某個類別的範圍,synchronized static cSync{}防止多個執行緒同時存取這個    類別中的synchronized static 方法。它可以對類別的所有物件實例起作用。
   
               B: synchronized 是某實例的範圍,synchronized isSync(){}防止多個執行緒同時存取此實例中的synchronized 方法。



     2.synchronized方法與synchronized代碼快的區別
     2.synchronized方法與synchronized代碼快的區別

      synchronized methods(){} 與synchronized(this) synchronized methods(){} 與synchronized(this) ed(this) {}可以更精確的控制衝突限制存取區域,有時表現更高效率。



     3.synchronized關鍵字是不能繼承的


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Java中Synchronized的原理與使用場景及Callable介面的使用方法及區別分析 Java中Synchronized的原理與使用場景及Callable介面的使用方法及區別分析 Apr 21, 2023 am 08:04 AM

Java中Synchronized的原理與使用場景及Callable介面的使用方法及區別分析

Java關鍵字synchronized原理與鎖定的狀態實例分析 Java關鍵字synchronized原理與鎖定的狀態實例分析 May 11, 2023 pm 03:25 PM

Java關鍵字synchronized原理與鎖定的狀態實例分析

Java中的三種同步方式和它們的使用方法是什麼? Java中的三種同步方式和它們的使用方法是什麼? Apr 27, 2023 am 09:34 AM

Java中的三種同步方式和它們的使用方法是什麼?

Java中如何利用synchronized實作同步機制? Java中如何利用synchronized實作同步機制? Apr 22, 2023 pm 02:46 PM

Java中如何利用synchronized實作同步機制?

Java Synchronized是什麼 Java Synchronized是什麼 May 14, 2023 am 08:28 AM

Java Synchronized是什麼

Java Synchronized鎖定升級原理及流程是什麼 Java Synchronized鎖定升級原理及流程是什麼 Apr 19, 2023 pm 10:22 PM

Java Synchronized鎖定升級原理及流程是什麼

Java中為什麼需要提供Lock,而不只使用synchronized關鍵字? Java中為什麼需要提供Lock,而不只使用synchronized關鍵字? Apr 20, 2023 pm 05:01 PM

Java中為什麼需要提供Lock,而不只使用synchronized關鍵字?

Java中的synchronized關鍵字是用來實現執行緒同步的 Java中的synchronized關鍵字是用來實現執行緒同步的 Apr 27, 2023 pm 02:01 PM

Java中的synchronized關鍵字是用來實現執行緒同步的

See all articles