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

正文內(nèi)容

java線程詳解ppt課件-資料下載頁(yè)

2025-05-05 13:33本頁(yè)面
  

【正文】 } ? return instance。 ? } ? } 死鎖 ? 是指兩個(gè)線程,都相互等待對(duì)方釋放 lock ? 是不可測(cè)知或避開(kāi)的 ? 應(yīng)采取措施避免死鎖的出現(xiàn) public class TestDeadLock{ ? public static void main(String args[]){ ? StringBuffer sb = new StringBuffer(ABCD)。 ? MyThread5 t = new MyThread5(sb)。 ? ()。 ? synchronized(sb){ ? try{ ? ()。 ? }catch(InterruptedException e){ ? ()。 ? } ? (sb)。 ? } ? (主線程執(zhí)行完畢 ...)。 ? } ? } ? class MyThread5 extends Thread{ ? private StringBuffer sb。 ? public MyThread5(StringBuffer sb){ ? = sb。 ? } ? public void run(){ ? synchronized(sb){ ? (1234)。 ? } ? (線程執(zhí)行完畢 ...)。 ? } } start 是否有產(chǎn)品 消費(fèi)者等待 生產(chǎn)者工作 生產(chǎn)者等待 消費(fèi)者消費(fèi) 產(chǎn)品是否 OK 是否可以生產(chǎn) 生產(chǎn) / 消費(fèi) 線程間的通信 ? Object 類定義了 wait()、 notify() 和 notifyAll() 方法??梢宰尵€程相互通知事件的發(fā)生。要執(zhí)行這些方法,必須擁有相關(guān)對(duì)象的鎖。 ? wait() 會(huì)讓調(diào)用線程休眠,直到用 () 中斷它 或者 wait經(jīng)過(guò)了指定的時(shí)間 或者另一個(gè)線程用 notify() 或 notifyAll() 喚醒它。 ? 當(dāng)對(duì)某個(gè)對(duì)象調(diào)用 notify() 時(shí),如果有任何線程正在通過(guò) wait() 等待該對(duì)象,那么就會(huì)喚醒其中一個(gè)線程。當(dāng)對(duì)某個(gè)對(duì)象調(diào)用 notifyAll() 時(shí),會(huì)喚醒所有正在等待該對(duì)象的線程。 ? wait、 notify、 notifyAll這三個(gè)方法 只能在 synchronized方法中調(diào)用 ,即無(wú)論線程調(diào)用一個(gè)對(duì)象的 wait還是 notify方法,該線程必須先得到該對(duì)象的鎖旗標(biāo),這樣, notify只能喚醒同一對(duì)象監(jiān)視器中調(diào)用 wait的線程。 多線程編程一般規(guī)則 ? 如果兩個(gè)或兩個(gè)以上的線程都修改一個(gè)對(duì)象,那么把執(zhí)行修改的方法定義為被同步的,如果對(duì)象更新影響到只讀方法,那么只讀方法也要定義成同步的。 ? 不要濫用同步。如果在一個(gè)對(duì)象內(nèi)的不同的方法訪問(wèn)的不是同一個(gè)數(shù)據(jù),就不要將方法設(shè)置為 synchronized的。 ? 如果一個(gè)線程必須等待一個(gè)對(duì)象狀態(tài)發(fā)生變化,那么他應(yīng)該在對(duì)象內(nèi)部等待,而不是在外部。他可以通過(guò)調(diào)用一個(gè)被同步的方法,并讓這個(gè)方法調(diào)用 wait()。 ? 每當(dāng)一個(gè)方法返回某個(gè)對(duì)象的鎖時(shí),它應(yīng)當(dāng)調(diào)用 notifyAll()來(lái)讓等待隊(duì)列中的其他線程有機(jī)會(huì)執(zhí)行。 ? 記住 wait()和 notify()/notifyAll()是 Object類方法,而不是Thread類的方法。仔細(xì)查看每次調(diào)用 wait()方法,都有相應(yīng)的 notify()/notifyAll()方法,且它們均作用于同一個(gè)對(duì)象。 多線程編程一般規(guī)則 ? 優(yōu)先使用 notifyAll()而不是 notify(); ? 不要改變上鎖對(duì)象的引用; ? 不要濫用同步機(jī)制,避免無(wú)謂的同步控制。 Callable ? Java新增了 Callable接口。 ? 提供了一個(gè) call方法可以作為線程的執(zhí)行體 ,它比run方法更加強(qiáng)大: – Call()方法可以有返回值 – Call()方法可以拋出異常 Callable ? Callable接口不是 Runnable的子接口 ,是不可以作為 Thread的 target被傳到 Thread里面的。 ? Future接口可以代表 Callable接口里面 Call方法的返回值, Future接口有個(gè)實(shí)現(xiàn)類 FutureTask,它同時(shí)還實(shí)現(xiàn)了 Runnable接口 ,利用它我們就可以構(gòu)造線程了。計(jì)算完成后只能使用 get 方法來(lái)獲取結(jié)果。 總結(jié) ? 兩種實(shí)現(xiàn)方式: Thread,Runnable ? 同步實(shí)現(xiàn)方式: synchronized, wait和notify,notityAll。 ? 線程狀態(tài):創(chuàng)建線程,就緒 Runnable,運(yùn)行 Running,掛起 Block,結(jié)束 dead ? 實(shí)現(xiàn) Runnable接口相對(duì)于繼承 Thread類的好處 ? 多線程的核心在于多個(gè)代碼塊并發(fā)執(zhí)行,本質(zhì)特點(diǎn)在于各代碼塊之間的代碼是亂序執(zhí)行的。 作業(yè) ; 現(xiàn)在某車庫(kù)有 3個(gè)停車位可以停車, 開(kāi)發(fā)一個(gè)程序?qū)崿F(xiàn)停車進(jìn)車的問(wèn)題。 注意:車位有車是不能再進(jìn)車的。 ,一個(gè)線程打印 152,另一個(gè)線程打印字母 AZ。 打印順序?yàn)?12A34B56C……5152Z 。 學(xué)習(xí)線程之間的通信協(xié)調(diào)關(guān)系。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1