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

正文內(nèi)容

第16章多線程(文件)

2025-08-07 07:56 上一頁面

下一頁面
 

【正文】 kets8 tickets9 tickets7 tickets6 tickets4 tickets5 tickets6 tickets3 tickets2 tickets1 tickets0 tickets1 tickets2 線程同步機(jī)制 ? 如何解決資源共享的問題? ?基本上所有解決多線程資源沖突問題都會(huì)采用給定時(shí)間只 允許一個(gè)線程訪問共享資源 ,這時(shí)就需要給共享資源上一道鎖。 synchronized (Object) {} ? Object為任意一個(gè)對(duì)象 ,每個(gè)對(duì)象都存在一個(gè)標(biāo)志位 ,并具有兩個(gè)值 ,分別為 0和 1。 public void run() { synchronized () { while (num 0) { try { (100)。 synchronized void f(){} ? 當(dāng)某個(gè)對(duì)象調(diào)用了同步方法,該對(duì)象上的其他同步方法必須等待該同步方法執(zhí)行完畢才能被執(zhí)行。 ? 實(shí)現(xiàn)同步是要很大的系統(tǒng)開銷作為代價(jià)的,甚至可能造成 死鎖 ,所以盡量避免無謂的同步控制。 線程間的通信 ? notify()方法用來喚醒一個(gè)處于阻塞狀態(tài)的線程,任何一個(gè)已經(jīng)滿足了被喚醒條件的線程都可能被喚醒。 wait和 sleep區(qū)別 ? 如果線程 A希望立即結(jié)束線程 B,則可以對(duì)線程 B對(duì)應(yīng)的 Thread實(shí)例調(diào)用 interrupt方法。 sleep方法沒有釋放鎖,而 wait方法釋放了鎖,使得其他線程可以使用同步控制塊或者方法。 wait和 sleep區(qū)別 ? 不同點(diǎn): ? 1. Thread類的方法: sleep(),yield()等 Object的方法: wait()和 notify()等 ? 2. 每個(gè)對(duì)象都有一個(gè)鎖來控制同步訪問。 wait和 sleep區(qū)別 ? 共同點(diǎn): ?1. 他們都是在多線程的環(huán)境下,都可以在程序的調(diào)用處阻塞指定的毫秒數(shù),并返回。 ? 線程調(diào)用 wait()方法后可以使該線程從運(yùn)行狀態(tài)進(jìn)入就緒狀態(tài) , sleep()方法也達(dá)到這樣一個(gè)效果,那么兩者究竟有何區(qū)別? ? 從同步的角度上來說,調(diào)用 sleep()方法的線程不釋放鎖,但調(diào)用 wait()方法的線程釋放鎖。 線程同步機(jī)制 ? 無論 synchronized關(guān)鍵字加在方法上還是對(duì)象上,它取得的 鎖都是對(duì)象 ,而不是把一段代碼或函數(shù)當(dāng)作鎖。 } (tickets+num)。 ? 這時(shí)該線程就處于就緒狀態(tài),直到 處于同步塊中的線程執(zhí)行完同步塊中的代碼為止。 線程同步機(jī)制 1) 同步塊 ? 在 Java中提供了同步機(jī)制,可以有效地防止資源沖突。 ()。 Thread tC = new Thread(t)。 } (tickets+num)。 線程安全 ? 在代碼中判斷當(dāng)前票數(shù)是否大于 0,如果大于 0則執(zhí)行將該票出售給乘客功能, ? 但當(dāng)兩個(gè)線程同時(shí)訪問這段代碼時(shí)(假如這時(shí)只剩下一張票),第一個(gè)線程將票售出,與此同時(shí)第二個(gè)線程也已經(jīng)執(zhí)行完成判斷是否有票的操作,并得出結(jié)論票數(shù)大于 0,于是它也執(zhí)行售出操作,這樣就會(huì)產(chǎn)生負(fù)數(shù)。 } main(5) t1(1), loop 0 t1(1), loop 1 t1(1), loop 2 t1(1), loop 3 t1(1), loop 4 t2(10), loop 0 t2(10), loop 1 t2(10), loop 2 t2(10), loop 3 t2(10), loop 4 線程同步 ? 線程安全 ? 線程同步機(jī)制 線程安全 ? 所以在編寫多線程程序時(shí),應(yīng)該考慮到線程安全問題。 (1)。 i++) { (().getName() +(+().getPriority()+ ) +, loop +i)。 線程的優(yōu)先級(jí) 線程的優(yōu)先級(jí) ? 在圖 169中,優(yōu)先級(jí)為 5的線程 A首先得到CPU時(shí)間片;當(dāng)該時(shí)間結(jié)束后,輪換到與線程 A相同優(yōu)先級(jí)的線程 B;當(dāng)線程 B的運(yùn)行時(shí)間結(jié)束后,會(huì)繼續(xù)輪換到線程 A, ? 直到線程 A與線程 B都執(zhí)行完畢,才會(huì)輪換到線程 C;當(dāng)線程 C結(jié)束后,最后才會(huì)輪到線程 D。每個(gè)新產(chǎn)生的線程都繼承了父線程的優(yōu)先級(jí)。 線程的優(yōu)先級(jí) ? 每個(gè)線程都具有各自的優(yōu)先級(jí),線程的優(yōu)先級(jí)可以在程序中表明該線程的重要性, 如果有很多線程處于就緒狀態(tài),系統(tǒng)會(huì)根據(jù)優(yōu)先級(jí)來決定首先使哪個(gè)線程進(jìn)入運(yùn)行狀態(tài) 。 if (count == 0) { return。 } … } main主線程運(yùn)行開始 ! 子線程 B運(yùn)行 : 0 子線程 B運(yùn)行 : 1 子線程 B運(yùn)行 : 2 子線程 A運(yùn)行 : 0 子線程 A運(yùn)行 : 1 子線程 A運(yùn)行 : 2 main主線程運(yùn)行結(jié)束 ! 線程的中斷 ? 以前使用 stop()方法停止線程,但當(dāng)前版本的 JDK早已廢除了 stop()方法,同時(shí)也不建議使用 stop()方法來停止一個(gè)線程的運(yùn)行。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1