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

正文內(nèi)容

java語言程序設計基礎教程多線程ppt-資料下載頁

2025-10-09 15:00本頁面
  

【正文】 new SyncStack()。 ? // 下面的消費者類對象和生產(chǎn)者類對象所操作的是同一個同步堆棧對象 ? Runnable source = new Producer(stack)。 ? Runnable sink = new Consumer(stack)。 ? Thread t1 = new Thread(source)。 // 線程實例化 ? Thread t2 = new Thread(sink)。 // 線程實例化 ? ()。 // 線程啟動 ? ()。 // 線程啟動 ? } ? } ? 類 Producer是生產(chǎn)者模型,其中的 run()方法中定義了生產(chǎn)者線程所做的操作,循環(huán)調(diào)用push()方法,將生產(chǎn)的 10個字母送入堆棧中,每次執(zhí)行完 push操作后,調(diào)用 sleep()方法睡眠一段隨機時間,以給其他線程執(zhí)行的機會。類Consumer是消費者模型,循環(huán)調(diào)用 pop()方法,從堆棧中取出一個數(shù)據(jù),一共取 10次,每次執(zhí)行完 pop操作后,調(diào)用 sleep()方法睡眠一段隨機時間,以給其他線程執(zhí)行的機會。 ? 在上述的例子中,通過運用 wait()和notify()方法來實現(xiàn)線程的同步,在同步中還會用到 notifyAll()方法,一般來說,每個共享對象的互斥鎖存在兩個隊列,一個是鎖等待隊列,另一個是鎖申請隊列,鎖申請隊列中的第一個線程可以對該共享對象進行操作,而鎖等待隊列中的線程在某些情況下將移入到鎖申請隊列。 比較一下 wait()、 notify()和notifyAll()方法: ? 1) wait, nofity, notifyAll:必須在已經(jīng)持有鎖的情況下執(zhí)行,所以它們只能出現(xiàn)在synchronized作用的范圍內(nèi),也就是出現(xiàn)在用synchronized修飾的方法或類中。 ? 2) wait的作用:釋放已持有的鎖 ,進入等待隊列。 ? 3) notify的作用:喚醒 wait隊列中的第一個線程并把它移入鎖申請隊列。 ? 4) notifyAll的作用:喚醒 wait隊列中的所有的線程并把它們移入鎖申請隊列。 Daemon線程 ? 一個 Daemon線程是在后臺執(zhí)行服務線程,例如網(wǎng)絡服務器偵聽連接端口的服務,隱藏系統(tǒng)線程,垃圾收集線程或其他 JVM 建立的線程。當程序中所有的非 Daemon的線程都結(jié)束了,即使 Daemon線程的run()方法中還有需要執(zhí)行的語句,也立刻結(jié)束執(zhí)行。 ? 線程默認是非 Daemon線程。 ? 一個線程調(diào)用 ? void setDaemon(boolean on)。 ? 方法可以將自己設置成一個 Daemon線程。這里,參數(shù) on取值為 true意味著是Daemon線程;取值為 false意味著是非Daemon線程,也稱用戶( user)線程。一個線程必須在運行之前設置自己是否是 Daemon線程。 【 例 78】 Daemon簡單的示范 ? public class ep7_8 { ? public static void main(String[] args) { ? Thread thread = new Thread( ? // 這是匿名類的寫法 ? new Runnable() { ? public void run() { ? while (true) { ? (T)。 ? } ? } ? })。 ? // 設置為 Daemon線程 ? (true)。 ? ()。 ? } ? } ? 這個程序在主線程結(jié)束之后, Daemon線程也就會跟著結(jié)束,可以使用setDaemon()方法來設置一個線程是否為Daemon線程,如果沒有使用setDaemon()方法設置為 true,則程序會不斷地打印出 T字符而不終止 (只能按Ctrl+C強迫中止程序 );使用 isDaemon()方法則可以判斷該線程是否為 Daemon線程。 ? 有以下程序段 ? class MyThread extends Thread { ? public static void main(String args[]) { ? MyThread t = new MyThread()。 ? MyThread s = new MyThread()。 ? ()。 ? (one.)。 ? ()。 ? (two.)。 ? } ? public void run() { ? (Thread)。 ? } ? } ? 則下面正確的選項是( ) ? A、編譯失敗 ? B、程序運行結(jié)果為: ? C、程序運行結(jié)果是: ? D、程序運行結(jié)果不確定
點擊復制文檔內(nèi)容
教學課件相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1