国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Java Synchronized鎖失敗案例及解決方案

瀏覽:3日期:2022-09-02 10:48:57

synchronized關(guān)鍵字,一般稱之為”同步鎖“,用它來修飾需要同步的方法和需要同步代碼塊,默認(rèn)是當(dāng)前對象作為鎖的對象。

同步鎖鎖的是同一個對象,如果對象發(fā)生改變,則鎖會不生效。

鎖失敗的代碼:

public class IntegerSynTest { //線程實現(xiàn)Runnable接口 private static class Worker implements Runnable{ private Integer num; public Worker(Integer num){ this.num=num; } @Override public void run() { synchronized (num){Thread thread = Thread.currentThread();//System.identityHashCode:返回原生的hashCode值,不管Object對象是被重寫;空引用的哈希代碼為零System.out.println(thread.getName()+'--@:---'+System.identityHashCode(num));num++;System.out.println(thread.getName()+'------num:'+num+'---'+System.identityHashCode(num));try { Thread.sleep(1000);} catch (InterruptedException e) { e.printStackTrace();}System.out.println(thread.getName()+'------num:'+num+'---'+System.identityHashCode(num)); } } public static void main(String[] args) { Worker worker = new Worker(1); for (int i = 0; i < 5; i++) {new Thread(worker).start(); } } }}

鎖失敗的運行結(jié)果:

Java Synchronized鎖失敗案例及解決方案

鎖失敗的原因:

1.num++的.class實現(xiàn)是這樣的Integer integer1 = this.num, integer2 = this.num = Integer.valueOf(this.num.intValue() + 1);

2.查看 Integer.valueOf()的源代碼

Java Synchronized鎖失敗案例及解決方案

這時發(fā)現(xiàn),它是重新 new出一個新的Integer,這樣的話,每 ++一次,那么就會產(chǎn)生一個新的對象,而Synchronize鎖是鎖同一個對象,當(dāng)鎖不同對象時,則會鎖失敗。

解決方法:

Synchronized同步鎖只要鎖的對象不發(fā)生改變即可,那么由此只需要聲明一個對象,不修改它,鎖這一個對象即可(還有其他方法暫不一一列舉,以后也不會列舉了)。

鎖成功的代碼

public class IntegerSynTest { //線程實現(xiàn)Runnable接口 private static class Worker implements Runnable{ private Integer num; /** * ---重點看這里--- * 聲明要鎖的對象 * ---重點看這里--- */ private Object object = new Object(); public Worker(Integer num){ this.num=num; } @Override public void run() { //修改鎖對象 synchronized (num){Thread thread = Thread.currentThread();//System.identityHashCode:返回原生的hashCode值,不管Object對象是被重寫;空引用的哈希代碼為零System.out.println(thread.getName()+'--@:---'+System.identityHashCode(num));num++;System.out.println(thread.getName()+'------num:'+num+'---'+System.identityHashCode(num));try { Thread.sleep(1000);} catch (InterruptedException e) { e.printStackTrace();}System.out.println(thread.getName()+'------num:'+num+'---'+System.identityHashCode(num)); } } public static void main(String[] args) { Worker worker = new Worker(1); for (int i = 0; i < 5; i++) {new Thread(worker).start(); } } }}

鎖成功的運行結(jié)果:

Java Synchronized鎖失敗案例及解決方案

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 成人网久久 | 久久免费播放 | 久久在线免费观看 | 国模在线播放 | 手机看片高清国产日韩片 | 午夜爽爽爽视频 | 黄色一级片a | 国产99视频在线观看 | 男人透女人超爽视频免费 | 怡红院日本一道日本久久 | 91九色视频无限观看免费 | 亚洲高清国产一线久久 | 毛片网站观看 | 日韩在线资源 | 在线观看 国产 | 日本在线网 | 国产精品亚洲综合久久 | 亚洲欧美日韩精品永久在线 | 欧美另类在线观看 | 日韩免费一级a毛片在线播放一级 | selaoban在线视频免费精品 | 曰本aaaaa毛片午夜网站 | 欧美在线小视频 | baoyu121永久免费网站 | 精品老司机在线视频香蕉 | 中国欧美一级毛片免费 | 鲁一鲁色一色 | 美国三级在线观看 | 欧美性另类69xxxx极品 | 亚洲国产日韩综合久久精品 | 亚洲精品成人a在线观看 | 日本一区二区三区欧美在线观看 | 成人免费高清视频网址 | 亚洲人成亚洲精品 | 亚洲天堂男人网 | 毛片网站在线看 | 久草资源在线观看 | 国产孕妇孕交一级毛片 | 波多野结衣在线观看一区 | 免费播放aa在线视频成人 | 亚洲国产欧美自拍 |