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

正文內(nèi)容

java語言程序設(shè)計基礎(chǔ)教程多線程ppt(編輯修改稿)

2024-11-14 15:00 本頁面
 

【文章內(nèi)容簡介】 ? + 價錢 : + )。 ? } else if (() == tvMaker) { ? (() + 開始生產(chǎn)電視 ,請等 ...)。 ? try { ? (2021)。 ? } catch (InterruptedException e) { ? } ? tv = new TV(紅星牌 , 3288)。 ? (() + 生產(chǎn)完畢 )。 ? } ? } ? } ? class TV { ? float price。 ? String name。 ? TV(String name, float price) { ? = name。 ? = price。 ? } ? } ? Java提供一個線程調(diào)度器來監(jiān)控程序中啟動后進入就緒狀態(tài)的所有線程。線程調(diào)度器按照線程的優(yōu)先級決定應(yīng)調(diào)度哪些線程來執(zhí)行。 ? 線程的優(yōu)先級用數(shù)字來表示,范圍從 1到 10,即 。一個線程的缺省優(yōu)先級是 5,即 。 ? 下述方法可以對優(yōu)先級進行操作: ? int getPriority()。 ? 得到線程的優(yōu)先級。 ? void setPriority(int newPriority)。 ? 當線程被創(chuàng)建后,可通過此方法改變線程的優(yōu)先級。 ? 線程調(diào)度器按線程的優(yōu)先級高低選擇高優(yōu)先級線程(進入運行中狀態(tài))執(zhí)行,同時線程調(diào)度是搶先式調(diào)度,即如果在當前線程執(zhí)行過程中,一個更高優(yōu)先級的線程進入可運行狀態(tài),則這個線程立即被調(diào)度執(zhí)行。 ? 搶先式調(diào)度又分為:時間片方式和獨占方式。在時間片方式下,當前活動線程執(zhí)行完當前時間片后,如果有其他處于就緒狀態(tài)的相同優(yōu)先級的線程,系統(tǒng)會將執(zhí)行權(quán)交給其他就緒態(tài)的同優(yōu)先級線程;當前活動線程轉(zhuǎn)入等待執(zhí)行隊列,等待下一個時間片的調(diào)度。 ? 在獨占方式下,當前活動線程一旦獲得執(zhí)行權(quán),將一直執(zhí)行下去,直到執(zhí)行完畢或由于某種原因主動放棄CPU,或者是有一高優(yōu)先級的線程處于就緒狀態(tài)。 ? 下面幾種情況下,當前線程會放棄 CPU: ? 1)線程調(diào)用了 yield()或 sleep()方法主動放棄; ? 2)由于當前線程進行 I/O 訪問,外存讀寫,等待用戶輸入等操作,導(dǎo)致線程阻塞;或者是為等候一個條件變量,以及線程調(diào)用 wait()方法; ? 3)搶先式系統(tǒng)下,由高優(yōu)先級的線程參與調(diào)度;時間片方式下,當前時間片用完,由同優(yōu)先級的線程參與調(diào)度。 ? 經(jīng)常有一些同時運行的線程需要共享數(shù)據(jù),此時就需考慮其他線程的狀態(tài)和行為,否則就不能保證程序的運行結(jié)果的正確性。 ? 下面是一個堆棧的類定義: ? class stack { ? int idx = 0。 // 堆棧指針的初始值為 0 ? char[] data = new char[6]。 // 堆棧有 6個字符的空間 ? public void push(char c) { // 壓棧操作 ? data[idx] = c。 // 數(shù)據(jù)入棧 ? idx++。 // 指針向上移動一位 ? } ? public char pop() { // 出棧操作 ? idx。 // 指針向下移動一位 ? return data[idx]。 // 數(shù)據(jù)出棧 ? } ? } ? 兩個線程 A和 B在同時使用 Stack的同一個實例對象, A正在往堆棧里 push一個數(shù)據(jù), B則要從堆棧中 pop一個數(shù)據(jù)。如果由于線程 A和 B在對Stack對象的操作上的不完整性,會導(dǎo)致操作的失敗,具體過程如下所示: ? 1) 操作之前 ? data = | p | q | | | | | idx=2 ? 2) A執(zhí)行 push中的第一個語句,將 r推入堆棧; ? data = | p | q | r | | | | idx=2 ? 3) A還未執(zhí)行 idx++語句, A的執(zhí)行被 B中斷, B執(zhí)行 pop方法,返回 q; ? data = | p | q | r | | | | idx=1 ? 4〕 A繼續(xù)執(zhí)行 push的第二個語句: ? data = | p | q | r | | , | | idx=2 ? 最后的結(jié)果相當于 r沒有入棧。產(chǎn)生這種問題的原因在于對共享數(shù)據(jù)訪問的操作的不完整性。 ? 為解決操作的不完整性問題,在 Java 語言中,引入了對象互斥鎖的概念,來保證共享數(shù)據(jù)操作的完整性。每個對象都對應(yīng)于一個可稱為 “ 互斥鎖 ” 的標記,這個標記用來保證在任一時刻,只能有一個線程訪問該對象。關(guān)鍵字synchronized 來與對象的互斥鎖聯(lián)系。當某個對象用 synchronized 修飾時,表明該對象在任一時刻只能由一個線程訪問。 ? public void push(char c) { ?
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1