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

正文內(nèi)容

第八章線程-文庫吧在線文庫

2025-12-09 14:09上一頁面

下一頁面
  

【正文】 先級 (續(xù) ) —— 例 8_13 線程的優(yōu)先級 71 8. 3 線程的優(yōu)先級 (續(xù) ) —— 例 8_13運行結(jié)果 ? 運行結(jié)果 Thread 1, tick = 50000 Thread 1, tick = 100000 Thread 1, tick = 150000 Thread 1, tick = 202000 Thread 1, tick = 250000 Thread 1, tick = 300000 Thread 1, tick = 350000 Thread 1, tick = 400000 Thread 0, tick = 50000 Thread 0, tick = 100000 Thread 0, tick = 150000 Thread 0, tick = 202000 Thread 0, tick = 250000 Thread 0, tick = 300000 Thread 0, tick = 350000 Thread 0, tick = 400000 ? 結(jié)果說明 – 具有較高優(yōu)先級的線程1一直運行到結(jié)束,具有較低優(yōu)先級的線程 0才開始運行 – 雖然具有較高優(yōu)先級的線程 1調(diào)用了 yield方法放棄 CPU資源,允許線程 0進行爭奪,但馬上又被線程 1搶奪了回去,所以有沒有 yield方法都沒什么區(qū)別 線程的優(yōu)先級 72 ? 如果在 yield方法后增加一行 sleep語句,讓線程 1暫時放棄一下在 CPU上的運行,哪怕是 1毫秒,則線程0也可以有機會被調(diào)度。 i 2。因此,只能將優(yōu)先級作為一種很粗略的工具使用。 //等待鍵盤輸入 ()。 } } 線程之間的通信 (續(xù) ) —— 例 8_9 多線程編程基礎(chǔ) 50 ? 運行結(jié)果 Producer puts ticket 1 Consumer buys ticket 1 Producer puts ticket 2 Consumer buys ticket 2 Producer puts ticket 3 Consumer buys ticket 3 Producer puts ticket 4 Consumer buys ticket 4 Producer puts ticket 5 Consumer buys ticket 5 Producer puts ticket 6 Consumer buys ticket 6 Producer puts ticket 7 Consumer buys ticket 7 Producer puts ticket 8 Consumer buys ticket 8 Producer puts ticket 9 Consumer buys ticket 9 Producer puts ticket 10 Consumer buys ticket 10 線程之間的通信 (續(xù) ) —— 例 8_9運行結(jié)果 多線程編程基礎(chǔ) 51 ? 程序說明 – 當 Consumer線程售出票后, available值變?yōu)?false,當Producer線程放入票后, available值變?yōu)?true – 只有 available為 true時, Consumer線程才能售票,否則就必須等待 Producer線程放入新的票后的通知 – 只有 available為 false時, Producer線程才能放票,否則必須等待 Consumer線程售出票后的通知 – 可見通過線程間的通信實現(xiàn)了我們的要求 線程之間的通信 (續(xù) ) —— 例 8_9說明 多線程編程基礎(chǔ) 52 后臺線程 ? 后臺線程 – 也叫守護線程,通常是為了輔助其它線程而運行的線程 – 它不妨礙程序終止 – 一個進程中只要還有一個前臺線程在運行,這個進程就不會結(jié)束;如果一個進程中的所有前臺線程都已經(jīng)結(jié)束,那么無論是否還有未結(jié)束的后臺線程,這個進程都會結(jié)束 – “垃圾回收”便是一個后臺線程 – 如果對某個線程對象在啟動(調(diào)用 start方法)之前調(diào)用了 setDaemon(true)方法,這個線程就變成了后臺線程 多線程編程基礎(chǔ) 53 ? 創(chuàng)建一個無限循環(huán)的后臺線程,驗證主線程結(jié)束后,程序即結(jié)束 public class Ex8_10 { public static void main(String[] args) { ThreadTest t=new ThreadTest()。 notify()。數(shù)據(jù)共享 和 線程互斥 操作經(jīng)常是密不可分 的 多線程的同步控制 (續(xù) ) —— 例 8_8說明 多線程編程基礎(chǔ) 46 線程之間的通信 ? 為了更有效地協(xié)調(diào)不同線程的工作,需要在線程間建立溝通渠道,通過線程間的“對話”來解決線程間的同步問題 ? 類的一些方法為線程間的通訊提供了有效手段 – wait() 如果 當前狀態(tài)不適合本線程執(zhí)行,正在執(zhí)行同步代碼( synchronized)的某個線程 A調(diào)用該方法(在對象 x上),該線程暫停執(zhí)行而進入對象 x的等待池,并釋放已獲得的對象 x的鎖旗標。 available=true。如果得不到,那么線程就被放到一個與該對象鎖旗標相對應的等待線程池中。 public Consumer(Tickets t) { =t。執(zhí)行監(jiān)視區(qū)代碼的線程在條件滿足的情況下可以允許其它線程進入 監(jiān)視區(qū) 多線程的同步控制 (續(xù) ) —— 線程同步 (Synchronization) 多線程編程基礎(chǔ) 40 ? synchronized —— 線程同步關(guān)鍵字 – 用于指定需要同步的代碼段或方法,也就是 監(jiān)視區(qū) – 可實現(xiàn)與一個鎖旗標的交互。 } } } 多線程的同步控制 (續(xù) ) —— 例 8_7 多線程編程基礎(chǔ) 35 ? 運行結(jié)果 Producer puts ticket 1 Producer puts ticket 2 Producer puts ticket 3 Producer puts ticket 4 Producer puts ticket 5 Producer puts ticket 6 Producer puts ticket 7 Producer puts ticket 8 Consumer buys ticket 1 Consumer buys ticket 2 Consumer buys ticket 3 Consumer buys ticket 4 Consumer buys ticket 5 Consumer buys ticket 6 Consumer buys ticket 7 Consumer buys ticket 8 Producer puts ticket 9 Producer puts ticket 10 Consumer buys ticket 9 Consumer buys ticket 10. ? 通過讓兩個線程操縱同一個票類對象,實現(xiàn)了數(shù)據(jù)共享的目的 多線程的同步控制 (續(xù) ) —— 例 8_7運行結(jié)果 多線程編程基礎(chǔ) 36 ? 設想一下,假如售票線程運行到 =false之前, CPU切換到存票線程,存票線程將 available置為 true,并直到整個存票線程結(jié)束。 =true。 new Producer(t).start()。 new Thread(t).start()。 } } 線程間的數(shù)據(jù)共享 (續(xù) ) —— 例 8_5 多線程編程基礎(chǔ) 24 class TestThread implements Runnable { private int sleepTime。 ( ().getName()+ finished )。 new Thread(thread2,Thread2).start()。 i=i1。 FactorialThread t=new FactorialThread(10)。 // 啟動線程 3 ( Threads started, main ends\n )。 public void interrupt() 打斷此線程 public final void join() 在當前線程中加入調(diào)用 join方法的線程 A,直到線程 A死亡才能繼續(xù)執(zhí)行當前線程 public final void join(long millis) 在當前線程中加入調(diào)用 join方法的線程 A,直到到達參數(shù)指定毫秒數(shù)或線程 A死亡才能繼續(xù)執(zhí)行當前線程 Thread類 (續(xù) ) —— 常用 API函數(shù) 多線程編程基礎(chǔ) 13 public final void setPriority( int newPriority) 設置線程優(yōu)先級 public final void setDaemon(Boolean on) 設置是否為后臺線程,如果當前運行線程均為后臺線程則 JVM停止運行。 } (The factorial of +num+ is +result)。 (main thread ends )。第八章 線程 鄭 莉 JAVA語言程序設計 2 目錄 ? 多線程編程基礎(chǔ) ? 線程的生命周期 ? 線程的優(yōu)先級 ? 本章小結(jié) 3 多線程編程基礎(chǔ) ? 本節(jié)內(nèi)容 – 線程的概念 – Thread類 – Runnable接口 – 線程間的數(shù)據(jù)共享 – 多線程的同步控制 – 線程之間的通信 – 后臺線程 4 線程的概念 ? 進程和線程的區(qū)別 ? 進程 – 一個獨立程序的每一次運行稱為一個進程,例如 ? 用字處理軟件編輯文稿時,同時打開 mp3播放程序聽音樂,這兩個獨立的程序在同時運行,稱為兩個進程 – 設置一個進程要占用相當一部分處理器時間和內(nèi)存資源 – 大多數(shù)操作系統(tǒng)不允許進程訪問其他進程的內(nèi)存空間,進程間的通信很不方便,編程模型比較復雜 多線程編程基礎(chǔ) 5 ? 線程 – 一個程序中多段代碼同時并發(fā)執(zhí)行,稱為多線程 – 通過多線程,一個 進程 表面上看同時可以執(zhí)行一個以上的任務 ——并發(fā) – 創(chuàng)建線程比創(chuàng)建進程開銷要小得多,線程之間的協(xié)作和數(shù)據(jù)交換也比較容易 – J
點擊復制文檔內(nèi)容
教學課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1