導航:首頁 > 編程語言 > 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給變數加鎖相關的資料

熱點內容
程序員cc發展方向 瀏覽:985
智慧黑板在哪裡下載app 瀏覽:309
男生穿衣搭配app哪個好 瀏覽:594
光大信用卡年費在app哪裡可以看 瀏覽:211
如何在找機平台下載app 瀏覽:395
西安php工作好找嗎 瀏覽:927
outlook命令 瀏覽:229
程序員那麼可愛主角介紹 瀏覽:934
銀行卡簡訊消息如何加密 瀏覽:246
文件夾怎麼不重名 瀏覽:406
linuxyum安裝java 瀏覽:250
java數字計算 瀏覽:286
java按鈕文字 瀏覽:641
python列表互換位置 瀏覽:337
sw怎麼刪除定向命令 瀏覽:757
php包含數組元素 瀏覽:666
安卓系統開發app需要什麼 瀏覽:730
ssh2項目源碼 瀏覽:288
三星提供了什麼伺服器地址 瀏覽:903
阿里雲輕量應用伺服器60元 瀏覽:160