導航:首頁 > 編程語言 > java給變數加鎖

java給變數加鎖

發布時間:2023-09-16 16:49:13

『壹』 java怎麼使用synchronized聲明一個變數

首先要說明的是,java里不能直接使用synchronized聲明一個變數,而是使用synchronized去修飾一個代碼塊或一個方法。

詳細說明如下:

synchronized用來修飾一個方法或者一個代碼塊,它用來保證在同一時刻最多隻有一個線程執行該段代碼。
一、當兩個並發線程訪問同一個對象object中的這個synchronized(this)同步代碼塊時,一個時間內只能有一個線程得到執行。另一個線程必須等待當前線程執行完這個代碼塊以後才能執行該代碼塊。
二、然而,當一個線程訪問object的一個synchronized(this)同步代碼塊時,另一個線程仍然可以訪問該object中的非synchronized(this)同步代碼塊。
三、尤其關鍵的是,當一個線程訪問object的亮握一個synchronized(this)同步代碼塊時,其他線程對object中所亂核有其它synchronized(this)同步代碼塊的訪問將被阻塞。
四、第三個例子同樣適用其它同步代碼塊。也就是說,當一個線程訪問object的一個synchronized(this)同步代碼塊時,它就獲得了這個object的對象鎖。結果,其它線程對該object對象所有同步代碼部分的訪問都被暫時阻塞。敬陪慶
五、以上規則對其它對象鎖同樣適用。

示例代碼:
public class Thread1 implements Runnable {
public void run() {
synchronized(this) {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName() + " synchronized loop " + i);
}
}
}
public static void main(String[] args) {
Thread1 t1 = new Thread1();
Thread ta = new Thread(t1, "A");
Thread tb = new Thread(t1, "B");
ta.start();
tb.start();
}
}
結果:
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

『貳』 關於JAVA里的加鎖synchronized

1.凡使用synchronized標記的方法,比如 public synchronized void func1() { .... },則同時只有一個線程能夠運行這個方法。比如,線程1正在運行func1,則其他線程需要運行func1的話,會卡住,等線程1運行func1結束後,其他線程中,才會有一個幸運兒成功爭取到運行func1的資格,然後這個幸運兒線程開始運行func1。沒有爭取到運行資格的其他線程,會繼續等待。

2.你的例子中,被鎖定的是 方法 m1,而不是屬性b。所以,m1的synchronized加鎖操作,與b沒有半點毛錢關系。

3.要實現你的鎖b想法,其實很簡單。去買一件貞操寶甲來就行了。開玩笑,哈哈。要鎖b,把main方法里的tt.m2()修改為tt.m1()。

4.以後別用「b」作為變數,總覺得怪怪了。也許你現在還沒長大,很單純。但大人的世界裡,「b」是一種不文雅但又對人類的未來有重要作用的東西。建議用cb來代替b。

閱讀全文

與java給變數加鎖相關的資料

熱點內容
單片機代碼跳掉 瀏覽:447
程序員談薪水壓價 瀏覽:861
榮耀10青春版支持方舟編譯啊 瀏覽:158
最優估計pdf 瀏覽:826
androiddrawtext字體 瀏覽:669
c語言源編輯源程序編譯 瀏覽:821
手裡捏東西真的可以解壓嗎 瀏覽:265
編譯原理畫狀態表 瀏覽:28
用echo命令產生下列輸出 瀏覽:358
在內網如何訪問伺服器 瀏覽:961
java導入oracle資料庫 瀏覽:134
堅朗內開內倒鋁條演算法 瀏覽:259
華為閱讀新建文件夾 瀏覽:770
幻塔如何選擇伺服器 瀏覽:221
解壓先把文件壓到系統盤 瀏覽:822
access壓縮和修復資料庫 瀏覽:791
光纖交換機命令 瀏覽:513
白色桌放什麼文件夾 瀏覽:296
分治演算法思想 瀏覽:151
s曲線加減速演算法 瀏覽:403