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

正文內容

第16章多線程-文庫吧

2025-07-05 07:56 本頁面


【正文】 d()。 (T2)。 ()。 ()。 (exit from +().getName())。 } } exit from main T2(1) T1(1) T1(2) T1(3) T2(2) T1(1) T1(2) T1(3) T2(3) exit from T1 T2(1) T2(2) T2(3) exit from T2 實現(xiàn) Runnable接口 ? 到目前為止,線程都是通過擴展 Thread類來創(chuàng)建的,如果程序員需要 繼承其他類 (非Thread類 )并使該程序可以使用線程,就需要使用 Runnable接口 。 ? 實現(xiàn) Runnable接口的語法如下: public class MyThread extends Object implements Runnable 實現(xiàn) Runnable接口 ? 實現(xiàn) Runnable接口的程序會 創(chuàng)建一個 Thread對象 ,并將 Runnable對象與 Thread對象相關聯(lián)。 ? Thread類中有如下兩個構造方法: public Thread(Runnable r) public Thread(Runnable r,String name) ?這兩個構造方法的參數(shù)中都存在 Runnable實例,使用以上構造方法就可以將Runnable實例與 Thread實例相關聯(lián)。 實現(xiàn) Runnable接口 ? 使用 Runnable接口啟動新的線程的步驟如下: ? 1)建立 Runnable對象。 ? 2)使用參數(shù)為 Runnable對象的構造方法創(chuàng)建 Thread實例。 ? 3)調用 start()方法啟動線程。 實現(xiàn) Runnable接口 實現(xiàn) Runnable接口 ? 通過 Runnable接口創(chuàng)建線程時首先需要編寫一個 實現(xiàn) Runnable接口的類 ,然后 實例化 該類的對象,這樣就建立了 Runnable對象; ? 接下來使用相應的構造方法 創(chuàng)建 Thread實例 ; ? 最后使用該實例調用 Thread類中的 Start()方法 啟動線程。 class MyThread2 implements Runnable{ private String name。 public MyThread2(String name) { =name。 } public void run(){ for(int i=1。i10。i++) (name + 運行 : +i)。 } } public static void main(String[] args) { new Thread(new MyThread2(th1)).start()。 new Thread(new MyThread2(th2)).start()。 /*MyThread2 th1=new MyThread2(th1)。 Thread thobj1=new Thread(th1)。 MyThread2 th2=new MyThread2(th2)。 Thread thobj2=new Thread(th2)。 ()。 ()。*/ } 實現(xiàn) Runnable接口 ? 實現(xiàn) Runnable接口比繼承 Thread類所具有的優(yōu)勢: ? 適合多個相同的程序代碼的線程去處理同一個資源 ? 可以避免 java中的單繼承的限制 ? 增加程序的健壯性,代碼可以被多個線程共享,代碼和數(shù)據獨立 線程的生命周期 ? 線程生命周期中的各種狀態(tài) 線程的生命周期 ? 線程具有生命周期,其中包含 7種狀態(tài),分別為 出生狀態(tài)、就緒狀態(tài)、運行狀態(tài)、等待狀態(tài)、休眠狀態(tài)、阻塞狀態(tài)和死亡狀態(tài)。 ? 出生狀態(tài) 就是用戶在創(chuàng)建線程時處于的狀態(tài),在用戶使用該線程實例調用 start()方法之前線程都處于出生狀態(tài); ? 當用戶調用 start()方法后,線程處于 就緒狀態(tài) (又被稱為可執(zhí)行狀態(tài)); ? 當線程得到系統(tǒng)資源后就進入 運行狀態(tài) 。 線程的生命周期 ? 一旦線程進入可執(zhí)行狀態(tài),它會在就緒與運行狀態(tài)下輾轉,同時也有可能進入 等待、休眠、阻塞或死亡狀態(tài) 。 ? 當處于運行狀態(tài)下的線程調用 Thread類中的wait()方法 ,該線程處于等待狀態(tài),進入等待狀態(tài)的線程必須調用 Thread類中的 notify()方法 才能被喚醒,而 notifyAll()方法 是將所有處于等待狀態(tài)下的線程喚醒; 線程的生命周期 ? 當線程調用 Thread類中的 sleep()方法 ,則會進入 休眠狀態(tài) 。 ? 如果一個線程在運行狀態(tài)下發(fā)出 輸入 /輸出請求 ,該線程將進入 阻塞狀態(tài) ,在其等待輸入 /輸出結束時線程進入 就緒狀態(tài) ,對于阻塞的線程來說,即使系統(tǒng)資源空閑,線程依然不能回到運行狀態(tài); ? 當線程的 run()方法 執(zhí)行完畢時,線程進入 死亡狀態(tài) 。 線程的生命周期 ? 雖然多線程看起來像同時執(zhí)行,但事實上 在同一時間點上只有一個線程被執(zhí)行 ,只是線程之間切換較快,所以才會使人產生線程是同時進行的假象。 ? 在 Windows操作系統(tǒng)中,系統(tǒng)會為每個線程分配一小段 CPU時間片,一旦 CPU時間片結束 就會將當前線程換為下一個線程,即使該線程沒有結束的情況下。 線程的生命周期 ? 根據圖 165所示,可以總結出使線程進入 阻塞狀態(tài) 有以下幾種可能。 ? 調用 sleep()方法 。 ? 調用 wait()方法 。 ? 等待 輸入 /輸出 完成。
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1