深入出不來的Java併發Synchronized!
java併發中的Synchronized關鍵詞
如果在多執行緒的環境中,我們經常會遇到資源競爭的情況,比如多個執行緒要去同時修改同一個共享變數,這時候,就需要對資源的訪問方法進行一定的處理,保證同一時間只有一個執行緒訪問。
java提供了synchronized關鍵字,方便我們實現上述操作。
我們舉個例子,我們建立一個類,提供了一個setSum的方法:
如果我們在多執行緒的環境中呼叫這個calculate方法:
按照上面的方法,我們預計要返回1000, 但是實際上基本不可能得到1000這個值,因為在多執行緒環境中,對同一個資源進行同時操作帶來的不利影響。
那我們怎麼才能夠建執行緒安全的環境呢?
Synchronized關鍵詞 java提供了多種執行緒安全的方法,本文主要講解Synchronized關鍵詞,Synchronized關鍵詞可以有很多種形式:
當我們使用synchronized時,java會在相應的物件上加鎖,從而在同一個物件等待鎖的方法都必須順序執行,從而保證了執行緒的安全。
看下呼叫結果:
這裡synchronized將會鎖住該方法的例項物件,多個執行緒中只有獲得該例項物件鎖的執行緒才能夠執行。
Synchronized放在static方法前面和例項方法前面鎖住的物件不同。放在static方法前面鎖住的物件是這個Class本身,因為一個Class在JVM中只會存在一個,所以不管有多少該Class的例項,在同一時刻只會有一個執行緒可以執行該放方法。
Synchronized Blocks 有時候,我們可能不需要Synchronize整個方法,而是同步其中的一部分,這時候,我們可以使用Synchronized Blocks:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69989885/viewspace-2745670/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【死磕Java併發】-----深入分析synchronized的實現原理Javasynchronized
- java併發之synchronizedJavasynchronized
- Java併發程式設計:synchronizedJava程式設計synchronized
- Java併發(4)- synchronized與CASJavasynchronized
- 啃碎併發(七):深入分析Synchronized原理synchronized
- Java 併發開發:內建鎖 SynchronizedJavasynchronized
- 深入淺出 synchronizedsynchronized
- Java併發程式設計之synchronizedJava程式設計synchronized
- Java併發——關鍵字synchronized解析Javasynchronized
- Java併發(二十)----synchronized原理進階Javasynchronized
- Java併發程式設計-synchronized指南Java程式設計synchronized
- Java併發指南4:Java中的鎖 Lock和synchronizedJavasynchronized
- 深入淺出 Java 併發程式設計 (1)Java程式設計
- 深入淺出 Java 併發程式設計 (2)Java程式設計
- Java高併發之synchronized關鍵字Javasynchronized
- Java併發(十九)----Monitor原理及Synchronized原理Javasynchronized
- 併發系列之「Java中的synchronized關鍵字」Javasynchronized
- Java併發2:JMM,volatile,synchronized,finalJavasynchronized
- Java 8 併發篇 - 冷靜分析 Synchronized(上)Javasynchronized
- Java 8 併發篇 - 冷靜分析 Synchronized(下)Javasynchronized
- java學習——併發專題——synchronized關鍵字Javasynchronized
- Java併發程式設計:Synchronized及其實現原理Java程式設計synchronized
- java併發筆記四之synchronized 鎖的膨脹過程(鎖的升級過程)深入剖析Java筆記synchronized
- 併發程式設計 synchronized程式設計synchronized
- 悲觀的併發策略——synchronized互斥鎖synchronized
- 併發程式設計之:synchronized程式設計synchronized
- 併發程式設計之synchronized(二)------jvm對synchronized的優化程式設計synchronizedJVM優化
- 【Java併發程式設計】synchronized相關面試題總結Java程式設計synchronized面試題
- 【Java併發程式設計】Synchronized關鍵字實現原理Java程式設計synchronized
- Java併發:深入淺出AQS之獨佔鎖模式原始碼分析JavaAQS模式原始碼
- 【併發程式設計】(二)Java併發機制底層實現原理——synchronized關鍵字程式設計Javasynchronized
- 燃燒吧!我的併發之魂–synchronizedsynchronized
- 燃燒吧!我的併發之魂--synchronizedsynchronized
- Java併發程式設計—synchronized保證執行緒安全的原理分析Java程式設計synchronized執行緒
- Java併發基礎03:傳統執行緒的互斥技術—synchronizedJava執行緒synchronized
- 併發-3-synchronized與ReentrantLocksynchronizedReentrantLock
- java併發筆記之證明 synchronized鎖 是否真實存在Java筆記synchronized
- Java併發容器,底層原理深入分析Java