關(guān)于synchronized有趣的同步問(wèn)題
在多線程對(duì)一個(gè)整數(shù)進(jìn)行自增操作時(shí),需要用synchronized進(jìn)行同步。然而,如果synchronized的對(duì)象選取的不合適的話,就無(wú)法實(shí)現(xiàn)同步的效果。如下面的例子。
public class SyncThreadTest extends Thread { public static Integer count = 0; private static final int TIMES = 10000; public SyncThreadTest(){ super("SyncThread"); } @Override public void run(){ synchronized (count){ for (int i = 0; i < TIMES; i ++){ count++; } } } public static void main(String[] args) throws InterruptedException{ SyncThreadTest t1 = new SyncThreadTest(); SyncThreadTest t2 = new SyncThreadTest(); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println(count); } }
在上面的例子中,選取了自增的變量作為同步的對(duì)象。啟動(dòng)2個(gè)線程,各自對(duì)count自增10000次。最后的結(jié)果,count的值卻不是20000次。
原因在于count對(duì)象一直處于改變當(dāng)中,起不到兩個(gè)線程的鎖的作用。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- 透徹理解Java中Synchronized(對(duì)象鎖)和Static Synchronized(類(lèi)鎖)的區(qū)別
- 使用synchronized實(shí)現(xiàn)一個(gè)Lock代碼詳解
- jvm細(xì)節(jié)探索之synchronized及實(shí)現(xiàn)問(wèn)題分析
- 深入理解java內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)
- Java關(guān)鍵字volatile和synchronized作用和區(qū)別
- Java可重入鎖的實(shí)現(xiàn)原理與應(yīng)用場(chǎng)景
- Java分布式鎖的概念與實(shí)現(xiàn)方式詳解
- Java線程公平鎖和非公平鎖的差異講解
- Java源碼解析之可重入鎖ReentrantLock
- Java多線程產(chǎn)生死鎖的必要條件
相關(guān)文章
Springboot基于enable模塊驅(qū)動(dòng)的實(shí)現(xiàn)
這篇文章主要介紹了Springboot基于enable模塊驅(qū)動(dòng)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08java中instanceof和getClass()的區(qū)別分析
本篇文章介紹了,在java中instanceof和getClass()的區(qū)別分析。需要的朋友參考下2013-04-04java socket實(shí)現(xiàn)聊天室 java實(shí)現(xiàn)多人聊天功能
這篇文章主要為大家詳細(xì)介紹了java socket實(shí)現(xiàn)聊天室,java實(shí)現(xiàn)多人聊天功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07SpringBoot修改內(nèi)置tomcat版本的操作步驟
生產(chǎn)環(huán)境使用的外部部署Tomcat還是內(nèi)置Tomcat由于版本安全漏洞,往往需要升級(jí)到指定的安全版本,本文演示一下SpringBoot升級(jí)內(nèi)置的Tomcat版本,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-07-07SpringAop @Aspect織入不生效,不執(zhí)行前置增強(qiáng)織入@Before方式
這篇文章主要介紹了SpringAop @Aspect織入不生效,不執(zhí)行前置增強(qiáng)織入@Before方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12