精品久久看,欧美成人久久一级c片免费,日本加勒比在线精品视频,国产一区二区三区免费大片天美,国产成人精品999在线,97理论三级九七午夜在线观看

當前位置: 首頁IT技術 → 線程中sleep()與wait()區別

線程中sleep()與wait()區別

更多

  sleep是讓線程暫停指定的時間,wait是讓線程等待,知道有notify方法出現在繼續運行,sleep不釋放對象鎖,wait釋放對象鎖。這在很多地方都有寫到,但沒有例子不好理解

  import java.util.ArrayList; import java.util.List; public class thread { public List list=new ArrayList(); Integer i=0;//新建一個對象,隨便什么,就為了借用它的鎖而已。 public static void main(String[] args){ thread th=new thread(); A a=th.new A(); B b=th.new B(); Thread add=new Thread(a); Thread get=new Thread(b); add.start(); get.start(); } class A extends Thread{ public void run(){ synchronized(i){ try { //Thread.sleep(1000); i.wait();//這里調用了對象i的wait方法,那么就表示所在線程暫時放棄i的對象鎖,并阻塞在這里,同時把機會讓給同樣使用i鎖的B線程執行 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } for(int j=0;j

  從如上代碼中可見,線程B是負責向集合中加值的,線程A是負責從集合中取值的,如果不進行同步處理,那么如果兩個線程同時運行,那么A可能在B加入值之前就從集合中取值,那么就會報錯,所以必須進行同步代碼的操作(也可以加入flag來判斷是否到了A中從集合里取值的時機)。

  而用sleep就沒有上面的功能了,因為從代碼中可以發現,不管是A線程先搶到cpu開始執行還是B線程先執行,他們中的一個肯定會拿到i的鎖的,但拿到后i的鎖就沒有使用wait方法釋放過,那假設B先拿到鎖了,向list中加入值完成了,那也別指望A能打印出來,因為A一直阻塞在(i){  

熱門評論
最新評論
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字數: 0/500 (您的評論需要經過審核才能顯示)
主站蜘蛛池模板: 色九月亚洲综合网 | 播五月婷婷| 九九九九九九精品免费 | 免费一级淫片 | 国产黄视频网站 | 九九99国产精品视频 | 精品视频一区二区观看 | 成人小视频在线 | 免费操片| 国产精品青草久久 | 成人伊人网 | 热99re久久免费视精品频软件 | 久久精品国产精品亚洲婷婷 | 国产二区视频在线观看 | 久久久夜色精品国产噜噜 | 色综合狠狠操 | 99精品热| 久久99精品国产免费观看 | 婷婷五月五 | 国产精华av午夜在线观看 | 青春草国产成人精品久久 | 国产精品美女久久福利网站 | 美女被羞羞视频网站在线 | 欧美高清一级 | 在线毛片免费观看 | 亚洲美日韩| 激情丁香婷婷 | 欧美精品在欧美一区二区 | 男人的天堂在线免费观看 | 久久桃色| 黄色工厂在线播放 | 九九热线有精品视频99 | 国产99页 | 欧美日韩亚洲国产一区二区三区 | 国产成人综合欧美精品久久 | 九九精品视频在线 | 四虎影视国产精品亚洲精品hd | 男女aa视频| 亚洲国产精久久久久久久春色 | 狠狠五月深爱婷婷网免费 | 激情午夜婷婷 |