freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java多線程ppt課件-資料下載頁

2024-10-19 04:51本頁面
  

【正文】 ublic static void main(String args[ ]) { 38. shareClass shc=new shareClass( )。 39. Thread t1=new Thread(new Producer(shc))。 40. Thread t2=new Thread(new Consumer(shc))。 41. ( )。 42. ( )。 43. } 44.} ? 【 實例 89】 程序的某次運行結果: 產(chǎn)生數(shù)據(jù): 47 讀取數(shù)據(jù): 47 產(chǎn)生數(shù)據(jù): 73 讀取數(shù)據(jù): 73 產(chǎn)生數(shù)據(jù): 69 讀取數(shù)據(jù): 69 產(chǎn)生數(shù)據(jù): 98 讀取數(shù)據(jù): 98 產(chǎn)生數(shù)據(jù): 68 讀取數(shù)據(jù): 68 通過系統(tǒng)方法實現(xiàn)線程通信 ? 多線程通過把任務分成分散的邏輯單元取代了事件循環(huán),消除了循環(huán)檢測。循環(huán)檢測通常通過重復檢查一個特定條件的循環(huán),一旦條件為真,就采取相應的行動,它浪費了 CPU時間。例如,經(jīng)典的隊列問題,一個線程產(chǎn)生一些數(shù)據(jù),而另一些線程取走數(shù)據(jù)。假設生產(chǎn)者生產(chǎn)更多的數(shù)據(jù)之前必須等到消費者結束。它才開始循環(huán)檢測,浪費許多的 CPU周期來等待消費者結束。很明顯,這種情況并不是我們所期望的。 通過系統(tǒng)方法實現(xiàn)線程通信 ? 為了避免循環(huán)檢測, Java通過 wait()、 notify()和 notifyAll()方法實現(xiàn)了一個巧妙的進程內(nèi)通信的機制。這些方法作為 Object的 final方法來實現(xiàn),因此所有類都包含有它們。這三個方法只可以在一個同步的上下文訪問,而且從計算機科學的角度上來說,它在概念上是很先進的,但是使用這些方法的規(guī)則卻很簡單 。 通過系統(tǒng)方法實現(xiàn)線程通信 ? wait…… notify調(diào)度機制是幾個線程對同一對象進行操作,其中某些線程在一定條件下自動掛起,等待其他線程在一定條件下通知其繼續(xù)運行。這和 join()不同, join()是等其他線程運行完,而 wait()是等其他線程向其發(fā)出通知。 ? wait()和 notify()是 java中每個對象都有的方法,當一個線程執(zhí)行到對象 O的 wait()方法時, java虛擬機會自動掛起,進入該對象的 wait池等待。當其他線程執(zhí)行到對象 O的 notify()方法時, java虛擬機會從對象 O的 wait池隨機取出一個線程放入 O的等鎖池中,一旦 O的標記被其他線程返回,即可運行。也可以執(zhí)行對象 O的 notifyALL(),對象O的 wait池中所有線程放入 O的等鎖池中。 圖 83 線程調(diào)度示意圖 新建線程 y 就緒線程 O的等鎖池 O的 wait池 優(yōu)先級多列 正在運行線程 x () () () () 執(zhí)行到 synchronized(O) 標記不存在則進入 O等鎖池 O標記返還了 線程可運行 有線程執(zhí)行 ()或(),則終止等待 有 O的標記且執(zhí)行到 (),則釋放標記 ,進入 O的 wait池 按優(yōu)先級排隊 高優(yōu)先級占先優(yōu)先級 等待條件滿足 通過系統(tǒng)方法實現(xiàn)線程通信 ? ( 1) wait()函數(shù)有兩種形式:第一種形式接受一個毫秒值,用于在指定時間長度內(nèi)暫停線程,使線程進入阻塞狀態(tài)。第二種形式為不帶參數(shù),代表 wait()在 notify()或notifyAll()之前會持續(xù)阻塞。 ? ( 2)當對一個對象執(zhí)行 notify()時,會從線程等待池中隨機取出一個線程放入 O的等鎖池中;當對一個對象執(zhí)行notifyAll()時,會從線程等待池中移走所有該對象的所有線程,并把它們放到鎖標志等待池中。 ? ( 3) 當調(diào)用 wait()后,線程會釋放掉它所占有的 “ 鎖標志 ” ,從而使線程所在對象中的其它 synchronized數(shù)據(jù)可被別的線程使用。 通過系統(tǒng)方法實現(xiàn)線程通信 ? 下面的程序錯誤地實現(xiàn)了生產(chǎn)者 /消費者問題的簡化形式。它包含了四個類: Queue,試圖同步的隊列; Producer,產(chǎn)生隊列輸入的線程對象;Consumer,使用隊列數(shù)據(jù)的線程對象; PC,一個創(chuàng)建單個 Queue、 Producer和 Consumer的小型類。 ? 【 實例 810】 1. class Queue { 2. int n。 3. synchronized int get() { 4. (Get: +n)。 5. return n。 6. } 7. synchronized void put(int n) { 8. =n。 9. (Put: +n)。 10. } 11. } ? 【 實例 810】 12. class Producer implements Runnable{ 13. Queue q。 14. Producer(Queue q) { 15. =q。 16. new Thread(this, Producer).start()。 17. } 18. public void run(){ 19. int i=0。 20. while(true) {(i++)。} 21. } 22. } ? 【 實例 810】 Consumer implements Runnable{ 24. Queue q。 25. Consumer(Queue q) { 26. =q。 27. new Thread(this,Consumer).start()。 28. } 29. public void run() { 30. while(true){()。} 31. } 32.} ? 【 實例 810】 PC{ 34. public static void main(String args[]) { 35. Queue q=new Queue ()。 36. new Producer(q)。 37. new Consumer(q)。 38. (Press controlC to stop.)。 39. } 40.} ? 【 實例 810】 PC{ 34. public static void main(String args[]) { 35. Queue q=new Queue ()。 36. new Producer(q)。 37. new Consumer(q)。 38. (Press controlC to stop.)。 39. } 40.}
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1