变态重口极致另类在线-波多久久夜色精品国产-波多野结衣在线观看一区-波多野结衣在线观看一区二区-污污的网站免费阅读-污污视频网址

當(dāng)前位置: 首頁(yè)IT技術(shù) → 線程中sleep()與wait()區(qū)別

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

更多

  sleep是讓線程暫停指定的時(shí)間,wait是讓線程等待,知道有notify方法出現(xiàn)在繼續(xù)運(yùn)行,sleep不釋放對(duì)象鎖,wait釋放對(duì)象鎖。這在很多地方都有寫(xiě)到,但沒(méi)有例子不好理解

  import java.util.ArrayList; import java.util.List; public class thread { public List list=new ArrayList(); Integer i=0;//新建一個(gè)對(duì)象,隨便什么,就為了借用它的鎖而已。 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();//這里調(diào)用了對(duì)象i的wait方法,那么就表示所在線程暫時(shí)放棄i的對(duì)象鎖,并阻塞在這里,同時(shí)把機(jī)會(huì)讓給同樣使用i鎖的B線程執(zhí)行 } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } for(int j=0;j

  從如上代碼中可見(jiàn),線程B是負(fù)責(zé)向集合中加值的,線程A是負(fù)責(zé)從集合中取值的,如果不進(jìn)行同步處理,那么如果兩個(gè)線程同時(shí)運(yùn)行,那么A可能在B加入值之前就從集合中取值,那么就會(huì)報(bào)錯(cuò),所以必須進(jìn)行同步代碼的操作(也可以加入flag來(lái)判斷是否到了A中從集合里取值的時(shí)機(jī))。

  而用sleep就沒(méi)有上面的功能了,因?yàn)閺拇a中可以發(fā)現(xiàn),不管是A線程先搶到cpu開(kāi)始執(zhí)行還是B線程先執(zhí)行,他們中的一個(gè)肯定會(huì)拿到i的鎖的,但拿到后i的鎖就沒(méi)有使用wait方法釋放過(guò),那假設(shè)B先拿到鎖了,向list中加入值完成了,那也別指望A能打印出來(lái),因?yàn)锳一直阻塞在(i){  

熱門(mén)評(píng)論
最新評(píng)論
發(fā)表評(píng)論 查看所有評(píng)論(0)
昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)
主站蜘蛛池模板: 精品视频一区二区三区 | 欧美日韩久久 | 久久青娱乐 | 羞羞视频在线观看视频 | 两性午夜性刺激在线观看免费 | 日日摸狠狠的摸夜夜摸 | 丁香五月缴情在线 | www.五月.com| 一区二区三区四区在线视频 | 男女男精品网站免费观看 | 欧美日韩欧美日韩 | 中文字幕在线视频免费观看 | 欧美一区二区另类有声小说 | 亚洲五月综合 | 91欧美亚洲| 欧美成人亚洲综合精品欧美激情 | 老司机69精品成免费视频 | 欧美一级亚洲一级 | 欧美在线视频一区在线观看 | 日日爽夜夜爽 | 免费国产综合视频在线看 | 在线观看中文字幕 | 久久精品vr中文字幕 | 日本三级2018亚洲视频 | 欧美成国产精品 | 国产精品99久久免费观看 | 精品乱人伦一区二区 | 日本漫画工囗全彩内番怀孕 | 精品国产综合成人亚洲区 | 亚洲欧美日韩另类在线一 | 欧美你懂的 | 成人h视频在线观看 | 欧美精品免费专区在线观看 | 日韩一级片在线播放 | 18成人免费观看网站入口 | 一级毛片毛片毛片毛毛片 | 国产免费三a在线 | 欧美a站| 欧美伊人久久大香线蕉在观 | 国产精品久久久久久久免费 | 在线日韩欧美一区二区三区 |