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

正文內(nèi)容

面向?qū)ο蟮某绦蛟O(shè)計-java張白一第三版第13章(已改無錯字)

2023-07-18 12:44:38 本頁面
  

【正文】 +5。 if(x1==250)x1=0。 repaint(?)。 //repaint(?)方法調(diào)用 paint(?)方法重畫矩形框 try 第 13章 多線程 { (500)。 } //使 th2線程睡眠 500ms catch(InterruptedException e){ }。 } // while }//run @Override public void paint(Graphics g) { (g)。 Graphics2D g2=(Graphics2D)g。 rec1=new (x1,y1,w1,h1)。 (rec1)。 } } 該程序的運行結(jié)果如圖 。 第 13章 多線程 圖 程序 C13_2運行中的一個瞬間 第 13章 多線程 多線程的管理 線程調(diào)度 在單 CPU的計算機上運行多線程程序,或者當線程數(shù)多于處理機的數(shù)目時,勢必存在多個線程爭用 CPU的情況,這時需要提供一種機制來合理地分配 CPU,使多個線程有條不紊、互不干擾地工作,這種機制稱為調(diào)度。在 Java運行系統(tǒng)中,由線程調(diào)度器對線程按優(yōu)先級進行調(diào)度。線程調(diào)度器中寫好了相應的調(diào)度算法,當有多個線程在同一時刻處于就緒狀態(tài)時,線程調(diào)度器會選擇優(yōu)先級最高的線程運行。但是,如果發(fā)生下列情況之一,調(diào)度器就會終止此線程的運行: 第 13章 多線程 (1) 本線程的線程體中調(diào)用了 yield(?)方法,從而讓出了對 CPU的占有權(quán); (2) 本線程的線程體中調(diào)用了 sleep(?)方法,使線程進入睡眠狀態(tài); (3) 本線程由于 I/O操作而進入阻塞狀態(tài); (4) 另一個具有更高優(yōu)先級的線程從睡眠狀態(tài)被喚醒,或其 I/O操作完成而返回就緒狀態(tài)。 Java的線程調(diào)度算法可分為兩種:一種是優(yōu)先搶占式調(diào)度;另一種是輪轉(zhuǎn)調(diào)度。 第 13章 多線程 當線程的優(yōu)先級不同時,為保證優(yōu)先級最高的線程先運行而采用優(yōu)先搶占式調(diào)度算法,即優(yōu)先級高的線程優(yōu)先搶占CPU。例如,在程序的運行過程中若設(shè)置線程 A具有最高優(yōu)先級,則線程 A將立即取代正在運行的其他線程,直到線程A處于阻塞狀態(tài)或運行結(jié)束。 當若干個線程具有相同的優(yōu)先級時,可采用隊列輪轉(zhuǎn)調(diào)度算法,即當一個線程運行結(jié)束時,該優(yōu)先隊列中排在最前面的線程運行。如果某個線程由于睡眠或 I/O阻塞成為一個等待再次運行的線程,那么當它恢復到可運行狀態(tài)后,即被插入到該隊列的隊尾,必須等到其他具有相同優(yōu)先級的線程都被調(diào)度過一次后,才有機會再次運行。 第 13章 多線程 線程優(yōu)先級 在 Java系統(tǒng)中,運行的每個線程都有優(yōu)先級。設(shè)置優(yōu)先級是為了在多線程環(huán)境中便于系統(tǒng)對線程進行調(diào)度,優(yōu)先級高的線程將優(yōu)先得以運行。 Java線程的優(yōu)先級是一個在 1~10之間的正整數(shù),數(shù)值越大,優(yōu)先級越高,未設(shè)定優(yōu)先級的線程其優(yōu)先級取缺省值 5。 Java線程的優(yōu)先級設(shè)置遵從下述原則: (1) 線程創(chuàng)建時,子線程繼承父線程的優(yōu)先級。 (2) 線程創(chuàng)建后,可在程序中通過調(diào)用 setPriority(?)方法改變線程的優(yōu)先級。 第 13章 多線程 (3) 線程的優(yōu)先級是 1~ 10之間的正整數(shù),并用標識符常量 MIN_PRIORITY表示優(yōu)先級為 1,用 NORM_PRIORITY表示優(yōu)先級為 5,用 MAX_PRIORITY表示優(yōu)先級為 10。其他級別的優(yōu)先級既可以直接用 1~ 10之間的正整數(shù)來設(shè)置,也可以在標識符常量的基礎(chǔ)上加一個常數(shù)。例如,下面的語句將線程優(yōu)先級設(shè)置為 8。 setPriority(+3); 第 13章 多線程 ?【 示例程序 】 創(chuàng)建三個線程 A、 B、 C,根據(jù)優(yōu)先級確定線程的執(zhí)行順序。 class C13_3 { public static void main(String args[?]) { Thread First=new MyThread(“A”)。 //創(chuàng)建 A線程 ()。 //?A線程優(yōu)先級為 1 Thread Second=new MyThread(“B”)。 //創(chuàng)建 B線程 (+1)。 //?B線程優(yōu)先級為 6 Thread Third=new MyThread(“C”)。 //創(chuàng)建 C線程 ()。 //?C線程優(yōu)先級為10 第 13章 多線程 (?)。 (?)。 (?)。 } } class MyThread extends Thread { String message。 MyThread(String message) { = message。} public void run( ) { for (int i=0。i2。i++) (message+ +getPriority(?))。 } } 第 13章 多線程 該程序的運行結(jié)果如下: A 1 C 10 C 10 B 6 B 6 A 1 從程序的運行結(jié)果可以看出,雖然線程 C在程序中最后調(diào)用 start(?)方法進入就緒狀態(tài),但由于它的優(yōu)先級是三個線程中最高的,因此可先執(zhí)行。 第 13章 多線程 線程同步 由于 Java支持多線程,具有并發(fā)功能,從而大大提高了計算機的處理能力。在各線程之間不存在共享資源的情況下,幾個線程的執(zhí)行順序可以是隨機的。但是,當兩個或兩個以上的線程需要共享同一資源時,線程之間的執(zhí)行次序就需要協(xié)調(diào),并且在某個線程占用這一資源時,其他線程只能等待。例如生產(chǎn)者和消費者的問題,只有當生產(chǎn)者生產(chǎn)出產(chǎn)品并將其放入貨架后,消費者才能從貨架上取走產(chǎn)品進行消費。當生產(chǎn)者沒有生產(chǎn)出產(chǎn)品時,消費者是沒法消費的。同理,當生產(chǎn)者生產(chǎn)的產(chǎn)品堆滿貨架時,應該暫停生產(chǎn),等待消費者消費。在程序設(shè)計中,可用兩個線程分別代表這里的 第 13章 多線程 生產(chǎn)者和消費者,可將貨架視為任意時刻只允許一個線程訪問的臨界資源。在這個問題中,兩個線程要共享貨架這一臨界資源,需要在某些時刻 (貨空 /貨滿 )協(xié)調(diào)它們的工作,即貨空時消費者應等待,而貨滿時生產(chǎn)者應等待。為了不發(fā)生混亂,還可進一步規(guī)定:當生產(chǎn)者往貨架上放貨物時不允許消費者取貨物,當消費者從貨架上取貨物時不允許生產(chǎn)者放貨物。這種機制在操作系統(tǒng)中稱為線程間的同步。在同步機制中,將那些訪問臨界資源的程序段稱為臨界區(qū)。 第 13章 多線程 在 Java系統(tǒng)中,臨界區(qū)程序段是
點擊復制文檔內(nèi)容
教學教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1