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

正文內(nèi)容

[理學(xué)]jaa2實(shí)用教程課件線程-wenkub.com

2025-01-16 14:42 本頁(yè)面
   

【正文】 try { (1000)。 返回 61 public synchronized void 存取 (int number) //存取方法 { if(()==會(huì)計(jì) ) { (今天是星期 +weekDay+\n)。 ()。 } } } 返回 58 public class synDemo { public static void main(String args[]) { HoldInteger h = new HoldInteger()。 while(()){ //sleep for random interval try{ ((int)(()*3000))。 } //setMoreData to false when count10. It means holder is full (false)。count++){ //sleep for random interval try{ ((int)(()*300))。} } 56 //producer produces integers and put them into holder class ProducInteger extends Thread{ HoldInteger pHold。 public void setSharedInt(int val) {shareInt = val。 try{ sleep(1)。 //放棄執(zhí)行權(quán) } } } } 線程的優(yōu)先級(jí) (續(xù) ) —— 例 8_13 51 線程的優(yōu)先級(jí) (續(xù) ) —— 例 8_13運(yùn)行結(jié)果 ? 運(yùn)行結(jié)果 Thread 1, tick = 50000 Thread 1, tick = 100000 Thread 1, tick = 150000 Thread 1, tick = 202200 Thread 1, tick = 250000 Thread 1, tick = 300000 Thread 1, tick = 350000 Thread 1, tick = 400000 Thread 0, tick = 50000 Thread 0, tick = 100000 Thread 0, tick = 150000 Thread 0, tick = 202200 Thread 0, tick = 250000 Thread 0, tick = 300000 Thread 0, tick = 350000 Thread 0, tick = 400000 ? 結(jié)果說明 – 具有較高優(yōu)先級(jí)的線程1一直運(yùn)行到結(jié)束,具有較低優(yōu)先級(jí)的線程 0才開始運(yùn)行 – 雖然具有較高優(yōu)先級(jí)的線程 1調(diào)用了 yield方法放棄 CPU資源,允許線程 0進(jìn)行爭(zhēng)奪,但馬上又被線程 1搶奪了回去,所以有沒有 yield方法都沒什么區(qū)別 ??? 52 ? 如果在 yield方法后增加一行 sleep語句,讓線程 1暫時(shí)放棄一下在 CPU上的運(yùn)行,哪怕是 1毫秒,則線程0也可以有機(jī)會(huì)被調(diào)度。 public TestThread(int i) { =i。 i 2。 i++) runners[i] = new TestThread(i)。因此,只能將優(yōu)先級(jí)作為一種很粗略的工具使用。如何通過線程間的通信實(shí)現(xiàn)線程 } } } 45 線程間的通信 ? 為了更有效地協(xié)調(diào)不同線程的工作,需要在線程間建立溝通渠道,通過線程間的“對(duì)話”來解決線程間的同步問題 ? 類的一些方法為線程間的通訊提供了有效手段 – 一個(gè)線程在使用的同步方法中時(shí),可能根據(jù)問題的需要,必須使用wait() (掛起 )方法使本線程等待,暫時(shí)讓出 CPU的使用權(quán),并允許其它線程使用這個(gè)同步方法。i=2。 //這時(shí)出納仍不能使用存取方法 try { (1000)。 即被多個(gè)線程共享的數(shù)據(jù),在某一時(shí)刻只允許一個(gè)線程對(duì)其進(jìn)行操作 – “生產(chǎn)者 /消費(fèi)者” 問題(工資管理員 /雇員) ? 生產(chǎn)者產(chǎn)生數(shù)據(jù),消費(fèi)者消費(fèi)數(shù)據(jù),具體來說,假設(shè)有一個(gè) Java應(yīng)用程序,其中有一個(gè)線程負(fù)責(zé)往數(shù)據(jù)區(qū)寫數(shù)據(jù),另一個(gè)線程從同一數(shù)據(jù)區(qū)中讀數(shù)據(jù),兩個(gè)線程可以并行執(zhí)行(類似于流水線上的兩道工序) ? 如果數(shù)據(jù)區(qū)已滿,生產(chǎn)者要等消費(fèi)者取走一些數(shù)據(jù)后才能再放;而當(dāng)數(shù)據(jù)區(qū)沒有數(shù)據(jù)時(shí),消費(fèi)者要等生產(chǎn)者放入一些數(shù)據(jù)后再取 必須保持線程間的同步 43 ? synchronized —— 線程同步關(guān)鍵字 – 把需要修改數(shù)據(jù)的方法用關(guān)鍵字 synchronized來修飾,用于指定需要同步的代碼段或方法,也就是監(jiān)視區(qū) – 當(dāng)一個(gè)線程 A使用一個(gè) synchronized修飾的方法時(shí),其他線程想使用這個(gè)方法時(shí)就必須等待,直到線程 A 使用完該方法 (除非線程 A使用 wait主動(dòng)讓出 CUP資源). – 當(dāng)被 synchronized限定的代碼段執(zhí)行完,就釋放鎖旗標(biāo)(信號(hào)量) ? 例子: 多線程的同步控制 (續(xù) ) —— synchronized關(guān)鍵字 public synchronized void 存取 (int number) //存取方法 { if(()==會(huì)計(jì) ) { (今天是星期 +weekDay+\n)。i++) { (上課 !)。 } catch(InterruptedException e) { (()+被老師叫醒了 )。 (王教授 )。 ()。 } } } 線程間的數(shù)據(jù)共享 (續(xù) ) —— 例 8_6 36 ? 運(yùn)行結(jié)果選最后幾行如下 Thread2 is selling ticket 6 Thread1 is selling ticket 5 Thread0 is selling ticket 4 Thread2 is selling ticket 3 Thread1 is selling ticket 2 Thread0 is selling ticket 1 ? 說明 – 在這個(gè)例子中,創(chuàng)建了 3個(gè)線程,每個(gè)線程調(diào)用的是 同一個(gè)SellTickets對(duì)象 中的 run()方法,訪問的是 同一個(gè)對(duì)象中的變量( tickets) – 如果是通過創(chuàng)建 Thread類的子類來模擬售票過程,再創(chuàng)建 3個(gè)新線程,則每個(gè)線程都會(huì)有各自的方法和變量,雖然方法是相同的,但變量卻是 各有 200張票 ,因而結(jié)果將會(huì)是各賣出 200張票,和原意就不符了 線程間的數(shù)據(jù)共享 (續(xù) ) —— 例 8_6運(yùn)行結(jié)果 37 public void start() 啟動(dòng)線程, JVM將調(diào)用此線程的 run方法,結(jié)果是將同時(shí)運(yùn)行兩個(gè)線程,當(dāng)前線程和執(zhí)行 run方法的線程 public void run() Thread的子類應(yīng)該重寫此方法,內(nèi)容應(yīng)為該線程應(yīng)執(zhí)行的任務(wù)。 new Thread(t).start()。 } } class SellTickets implements Runnable { private int tickets=200。 SellTickets t3=new SellTickets()。 (()+ 線程的局部變量 i=+i)。 } public void run() { int i=0。 Move() { zhangsan=new Thread(this)。 ()。 ( sleepTime )。 ( Threads started, main ends\n )。 ( Starting threads )。 ( ().getName()+ finished )。 public TestThread() { sleepTime = ( int ) ( () * 6000 )。 new Thread(thread2,Thread2).start()。 TestThread thread2 = new TestThread()。 i=i1。 public FactorialThread( int num ) { =num。 FactorialThread thread=new FactorialThread(10)。 ( sleepTime )。 } } Thread類 (續(xù) ) —— 例 8_2 20 class TestThread extends Thread { private int sleepTime。 ()。這個(gè)方法必須在 start()方法前使用 public final void checkAccess() 判斷當(dāng)前線程是否有權(quán)力修改調(diào)用此方法的線程 public void setName(String name) 更改本線程的
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1