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

正文內(nèi)容

java的多線程機(jī)制(參考版)

2024-10-16 15:38本頁(yè)面
  

【正文】 } catch (InterruptedException e) { } } } //end of run() … … … } //end of class 6 Java的多線程機(jī)制 60 課后作業(yè) ? P202. 第 1 1 13題 。 if (m_nCurrImage = = NUM_IMAGES) m_nCurrImage = 0。 6 Java的多線程機(jī)制 57 線程的死鎖 ?死鎖 –不同的線程分別占用對(duì)方需要的同步資源不放棄,都在等待對(duì)方放棄自己需要的同步資源,就形成了線程的死鎖 ?解決方法 –專門(mén)的算法、原則 –盡量減少同步資源的定義 6 Java的多線程機(jī)制 58 動(dòng)畫(huà) ?即若干幅相近的圖片接連顯示 ?例:旋轉(zhuǎn)的地球 6 Java的多線程機(jī)制 59 public class RollEarth extends Applet implements Runnable { … … … public void run() { //實(shí)現(xiàn)動(dòng)畫(huà) … … … while (true) { //循環(huán)往復(fù)地顯示每一幀圖片 try { displayImage(m_Graphics)。 //啟動(dòng)生產(chǎn)者線程 ()。 //Producer線程 Consumer c1 = new Consumer(c, 1)。 } } } //end of class Consumer 6 Java的多線程機(jī)制 56 class ProducerConsumerTest { //主類: 測(cè)試 public static void main(String[] args) { CubbyHole c = new CubbyHole()。 i++) {//消費(fèi) 10個(gè) value = ()。 for (int i = 0。 = number。 private int number。 try { sleep((int)(() * 100))。 i++) { //共產(chǎn)生 10個(gè) (i)。 } public void run() { //定義 run()方法 for (int i = 0。 public Producer(CubbyHole c, int number) { cubbyhole = c。 //通知喚醒其他等待管程的線程 } //end of put() } //end of class CubbyHole 6 Java的多線程機(jī)制 54 class Producer extends Thread { //生產(chǎn)者線程類 private CubbyHole cubbyhole。 //把共享變量修改為要放置的數(shù)據(jù) available = true。 //返回要取出的數(shù)值 } //end of get() 6 Java的多線程機(jī)制 53 //存放數(shù)據(jù)的同步方法 put() public synchronized void put(int value){ while( available= =true ){ try{ wait( )。 //修改條件 notify( )。 // 條件標(biāo)志變量 public synchronized int get(){ //取數(shù)據(jù)的同步方法 get() while( available= =false ){ try{ wait( )。 – Consumer:消費(fèi)數(shù)據(jù)( 取數(shù)據(jù)) ?CubbyHole類,共享數(shù)據(jù)區(qū),同步方法 – put(int value)方法 – int get()方法 ?主類中創(chuàng)建共享數(shù)據(jù)對(duì)象,并啟動(dòng)兩線程 6 Java的多線程機(jī)制 52 class CubbyHole { private int seq。 if (…) () 。 Thread t = new Thread(r) 。 //設(shè)標(biāo)記 public void run() { while (! timeToQuit ){ … } } public void stopRunning() { timeToQuit=true。 … // 執(zhí)行自己的工作 try { () 。 Thread tt = new Thread(ot) 。 ?調(diào)用方法的必要條件:當(dāng)前線程必須具有對(duì)該對(duì)象 的監(jiān)控權(quán)(加鎖) notifyAll() ?喚醒 wait隊(duì)列中的所有線程,并把它門(mén)移入鎖申請(qǐng) 隊(duì)列。 ?在當(dāng)前線程被 notify后,要重新獲得監(jiān)控權(quán),然后從斷點(diǎn)處繼續(xù)代碼的執(zhí)行。 6 Java的多線程機(jī)制 42 線程的同步與互斥 ?線程間需協(xié)調(diào)與通訊:生產(chǎn)者 /消費(fèi)者問(wèn)題 進(jìn)隊(duì) 出隊(duì) 生產(chǎn)者 消費(fèi)者 6 Java的多線程機(jī)制 43 線程的同步與互斥 ?wait()與 notify() – Object類的方法: public final void – wait(): 令當(dāng)前線程掛起并放棄管程,同步資源解鎖,使別的線程可訪問(wèn)并修改共享資源,而當(dāng)前線程排隊(duì)等候再次對(duì)資源的訪問(wèn) – notify()喚醒正在排隊(duì)等待資源管程的線程中優(yōu)先級(jí)最高者,使之執(zhí)行并擁有資源的管程 – wait() + notify() + 標(biāo)志 變量:可協(xié)調(diào)、同步不同線程的工作 6 Java的多線程機(jī)制 44 線程的同步與互斥 主線程 線程 1( ) 線程 2( ) 操作對(duì)象 共享數(shù)據(jù) (隊(duì) ) synchronized 同步方法 1(生產(chǎn) ) wait() notify() synchronized 同步方法 2(消費(fèi) ) wait() notify() 6 Java的多線程機(jī)制 45 線程的同步與互斥 public final void wait() 方法 ?在當(dāng)前線程中調(diào)用方法: 對(duì)象名 .wait() ?使當(dāng)前線程進(jìn)入等待
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1