關(guān)于synchronized有趣的同步問題
在多線程對一個整數(shù)進(jìn)行自增操作時,需要用synchronized進(jìn)行同步。然而,如果synchronized的對象選取的不合適的話,就無法實(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);
}
}
在上面的例子中,選取了自增的變量作為同步的對象。啟動2個線程,各自對count自增10000次。最后的結(jié)果,count的值卻不是20000次。
原因在于count對象一直處于改變當(dāng)中,起不到兩個線程的鎖的作用。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- 透徹理解Java中Synchronized(對象鎖)和Static Synchronized(類鎖)的區(qū)別
- 使用synchronized實(shí)現(xiàn)一個Lock代碼詳解
- jvm細(xì)節(jié)探索之synchronized及實(shí)現(xiàn)問題分析
- 深入理解java內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)
- Java關(guān)鍵字volatile和synchronized作用和區(qū)別
- Java可重入鎖的實(shí)現(xiàn)原理與應(yīng)用場景
- Java分布式鎖的概念與實(shí)現(xiàn)方式詳解
- Java線程公平鎖和非公平鎖的差異講解
- Java源碼解析之可重入鎖ReentrantLock
- Java多線程產(chǎn)生死鎖的必要條件
相關(guān)文章
Java使用Callable接口實(shí)現(xiàn)多線程的實(shí)例代碼
這篇文章主要介紹了Java使用Callable接口實(shí)現(xiàn)多線程的實(shí)例代碼,實(shí)現(xiàn)Callable和實(shí)現(xiàn)Runnable類似,但是功能更強(qiáng)大,具體表現(xiàn)在可以在任務(wù)結(jié)束后提供一個返回值,Runnable不行,call方法可以拋出異,Runnable的run方法不行,需要的朋友可以參考下2023-08-08
Java使用CountDownLatch實(shí)現(xiàn)統(tǒng)計(jì)任務(wù)耗時
這篇文章主要為大家詳細(xì)介紹了Java如何使用CountDownLatch實(shí)現(xiàn)統(tǒng)計(jì)任務(wù)耗時的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-06-06
Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法
這篇文章主要介紹了Hadoop 使用IntelliJ IDEA 進(jìn)行遠(yuǎn)程調(diào)試代碼的配置方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
Springboot+QueryDsl實(shí)現(xiàn)融合數(shù)據(jù)查詢
這篇文章主要將介紹的是 Springboot 使用 QueryDsl 實(shí)現(xiàn)融合數(shù)據(jù)查詢,文中有詳細(xì)的代碼講解,對 SpringBoot?Querydsl?查詢操作感興趣的朋友一起看看吧2023-08-08
Java集合和IO流實(shí)現(xiàn)水果攤項(xiàng)目
最近閑來無事,使用java基礎(chǔ)知識集合和IO流做了一個簡單的小項(xiàng)目,水果攤項(xiàng)目,用到GUI和Mysql數(shù)據(jù)庫搭建,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06

