日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

synchronized(this)用法

發布時間:2025/1/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 synchronized(this)用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于 Java synchronized(this) 的問題

?

用法:

public class Thread1 implements Runnable {public void run() { <strong>synchronized(this)</strong> { for (int i = 0; i < 5; i++) {<span style="white-space:pre"> </span>System.out.println(Thread.currentThread().getName()+ " synchronized loop " + i); <span style="white-space:pre"> </span>}} } public static void main(String[] args) { <span style="white-space:pre"> </span> Thread1 t1 = new Thread1();Thread ta = new Thread(t1,"A");Thread tb = new Thread(t1,"B");ta.start();tb.start(); } }

分析:

synchronized(this)?
這里的this是指當前對象,也就是說不管ta還是tb,剛開始運行這段代碼的時候會給這段代碼加個鎖,這樣即使運行到中間被替換了,另一個線程也不會執行這段代碼,因為這段代碼加鎖了,而鑰匙在給代碼加鎖的那個線程手里,只有加鎖的線程運行完這段代碼,才會給代碼解鎖.然后其他線程才能執行這段代碼..

加個synchronized(this)以后運行結果是這樣:
A synchronized loop 0
A synchronized loop 1
A synchronized loop 2
A synchronized loop 3
A synchronized loop 4
B synchronized loop 0
B synchronized loop 1
B synchronized loop 2
B synchronized loop 3
B synchronized loop 4

不加的話是這樣:(順序亂了,有好多種結果,這里只是其中一種)..
A synchronized loop 0
B synchronized loop 0
A synchronized loop 1
B synchronized loop 1
A synchronized loop 2
B synchronized loop 2
A synchronized loop 3
B synchronized loop 3
B synchronized loop 4
A synchronized loop 4

總結

以上是生活随笔為你收集整理的synchronized(this)用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。