国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

對于線程加鎖synchronized可能存在的誤區的解析

2019-11-14 23:01:49
字體:
來源:轉載
供稿:網友
對于線程加鎖synchronized可能存在的誤區的解析

使用synchronized之后,并不是說synchronized鎖定的方法或者代碼塊要一次性執行完,才能跳轉到其他線程。而是當兩個并發線程訪問同一個對象object中的這個synchronized(this)同步代碼塊時,一個時間內只能有一個線程得到執行。另一個線程必須等待當前線程執行完這個代碼塊以后才能執行該代碼塊。也即是說,即使給某個方法加鎖了,如果其他線程訪問不是這個方法時,線程依然可以跳轉。如下例子:

 1 public class test2{ 2     public static void main(String[] args) { 3         Thread a=new A2(); 4         Thread b=new B2(); 5         a.start(); 6         b.start(); 7     } 8 } 9 10 class A2 extends Thread{11     public void run(){12         show1();13     }14     public synchronized void show1(){15         for(int i=0;i<20;i++){16             System.out.PRint(i);17         }18     }        19 }20 21 class B2 extends Thread{22     public void run(){23         show2();24     }25     public synchronized void show2(){26         for (int i = 0; i < 20; i++) {27             System.out.print(i);28         }29     }30 }

創建了兩個線程,分別訪問自己的加鎖show方法,最終的結果不一定是兩個連續的1-19,我的運行結果如下:

001122334455667788991010111112121313141415161718191516171819

所以synchronized只是對于訪問同一方法的不同線程有效。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新乡市| 新蔡县| 兴安县| 洮南市| 武宣县| 青州市| 永川市| 西华县| 奉节县| 治县。| 安西县| 中山市| 彰武县| 合江县| 乌鲁木齐县| 宣城市| 海伦市| 昭平县| 正定县| 黄石市| 报价| 沐川县| 石城县| 柳林县| 丁青县| 涪陵区| 兴化市| 洪江市| 武义县| 大连市| 莆田市| 祁连县| 莒南县| 阳春市| 望城县| 阆中市| 灌阳县| 博客| 舒城县| 辽中县| 水城县|