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

正文內(nèi)容

第八章線程(更新版)

2025-12-19 14:09上一頁面

下一頁面
  

【正文】 =t。 available=true。 i=number) (Consumer buys ticket +(++i))。 //票總數(shù) int number=0。 i=) (Consumer buys ticket +(++i))。} public void run() { while(()) { synchronized(t) { // 申請對象 t的鎖旗標(biāo) (Producer puts ticket +(++))。 } catch ( InterruptedException exception ) {}。 public Consumer(Tickets t) { =t。 //總票數(shù) boolean available=false。 public void run() { while(tickets0) { ( ().getName() + is selling ticket +tickets)。 ( sleepTime )。 ( Starting threads )。 } } Runnable接口 (續(xù) ) —— 例 8_4 多線程編程基礎(chǔ) 21 class TestThread implements Runnable { private int sleepTime。 } } Runnable接口 (續(xù) ) —— 例 8_3 多線程編程基礎(chǔ) 20 ? 使用 Runnable接口實現(xiàn)例 8_2功能 public class Ex8_4{ public static void main( String [] args ) { TestThread thread1 = new TestThread()。 } } Runnable接口 (續(xù) ) —— 例 8_3 多線程編程基礎(chǔ) 19 class FactorialThread implements Runnable { private int num。 sleepTime = ( int ) ( () * 6000 )。 TestThread thread3 = new TestThread( thread3 )。 } catch(Exception e){}。 } 多線程編程基礎(chǔ) 8 public void run() { int i=num。這個子類的對象需要調(diào)用 start方法來啟動,新線程將自動進(jìn)入 run方法。 FactorialThread thread=new FactorialThread(10)。 while(i0) { result=result*i。 多線程編程基礎(chǔ) 12 public void start() 啟動線程, JVM將調(diào)用此線程的 run方法,結(jié)果是將同時運(yùn)行兩個線程,當(dāng)前線程和執(zhí)行 run方法的線程 public void run() Thread的子類應(yīng)該重寫此方法,內(nèi)容應(yīng)為該線程應(yīng)執(zhí)行的任務(wù)。 // 啟動線程 1 ()。 //線程休眠 } catch ( InterruptedException exception ) {}。 int result=1。 ( Starting threads )。 ( sleepTime )。 new Thread(threadobj,Thread3).start()。 } } 線程間的數(shù)據(jù)共享 (續(xù) ) —— 例 8_5 多線程編程基礎(chǔ) 25 ? 運(yùn)行結(jié)果 Starting threads Thread1 going to sleep for 966 Thread2 going to sleep for 966 Threads started, main ends Thread3 going to sleep for 966 Thread1 finished Thread2 finished Thread3 finished ? 說明 – 因為是用一個 Runnable類型對象創(chuàng)建的 3個新線程,這三個線程就共享了這個對象的私有成員 sleepTime,在本次運(yùn)行中,三個線程都休眠了 966毫秒 線程間的數(shù)據(jù)共享 (續(xù) ) —— 例 8_5運(yùn)行結(jié)果 多線程編程基礎(chǔ) 26 線程間的資源共享 (續(xù) ) ? 獨(dú)立的同時運(yùn)行的線程有時需要共享一些數(shù)據(jù)并且考慮到彼此的狀態(tài)和動作 – 例如生產(chǎn) /消費(fèi)問題:生產(chǎn)線程產(chǎn)生數(shù)據(jù)流,然后這些數(shù)據(jù)流再被消費(fèi)線程消費(fèi) – 假設(shè)一個 Java應(yīng)用程序,其中有一個線程負(fù)責(zé)往文件寫數(shù)據(jù),另一個線程從同一個文件中往出都數(shù)據(jù),因為涉及到同一個資源,這里是同一個文件,這兩個線程必須保證某種方式的同步 多線程編程基礎(chǔ) 27 ? 用三個線程模擬三個售票口,總共出售 200張票 – 用 3個線程模仿 3個售票口的售票行為 – 這 3個線程應(yīng)該共享 200張票的數(shù)據(jù) public class Ex8_6{ public static void main(String[] args){ SellTickets t=new SellTickets()。本例采用兩個線程共享同一個數(shù)據(jù)對象來實現(xiàn)對同一份數(shù)據(jù)的操作 public class Ex8_7 { public static void main(String[] args) { Tickets t=new Tickets(10)。 public Producer(Tickets t) { =t。 i=) (Consumer buys ticket +(++i))。即售票線程執(zhí)行時不進(jìn)入存票線程、存票線程執(zhí)行時不進(jìn)入售票線程 ? Java 使用的同步機(jī)制是監(jiān)視器 – 每個對象都只有一個“鎖旗標(biāo)”與之相連,利用多線程對其的爭奪可實現(xiàn)線程間的互斥操作 – 當(dāng)線程 A獲得了一個對象的鎖旗標(biāo)后,線程 B必須等待線程 A完成規(guī)定的操作、并釋放出鎖旗標(biāo)后,才能獲得該對象的鎖旗標(biāo),并執(zhí)行線程 B中的操作 多線程的同步控制 (續(xù) ) —— 解決例 8_7的問題 多線程編程基礎(chǔ) 39 ? 線程同步的概念,包括互斥和協(xié)作 – 互斥:許多線程在同一個共享數(shù)據(jù)上操作而互不干擾,同一時刻只能有一個線程訪問該共享數(shù)據(jù)。 } } 多線程的同步控制 (續(xù) ) —— synchronized關(guān)鍵字 多線程編程基礎(chǔ) 42 class Consumer extends Thread { Tickets t=null。 } } //釋放對象 t的鎖旗標(biāo) } (Consumer ends)。 //是否有待售的票 public Tickets(int size) { =size。在例 8_8中,正是因為 put和 sell兩個同步方法都屬于同一個 Tickets類的對象,所以實現(xiàn)了同步 – 由于要實現(xiàn)多線程的數(shù)據(jù)共享,即多個線程對同一數(shù)據(jù)資源進(jìn)行操作,就可能造成一個線程對資源進(jìn)行了部分處理,另一個線程就插進(jìn)來對其進(jìn)行處理,這樣就會破壞共享數(shù)據(jù)的完整性。} catch(Exception e){} (Consumer buys ticket +(number))。 public Consumer(Tickets t) { =t。 ()。這個算法基于線程的優(yōu)先級對其進(jìn)行調(diào)度 66 ? 線程的優(yōu)先級 – 每個 Java線程都有一個優(yōu)先級,其范圍都在 1和10之間。 //設(shè)置第一個線程優(yōu)先級為 2 runners[1].setPriority(3)。 if ((tick % 50000) == 0) { //每隔 5000進(jìn)行顯示 (Thread + num + , tick = + tick)。 } } } 8. 3 線程的優(yōu)先級 (續(xù) ) —— 例 8_13修改 線程的優(yōu)先級 73 8. 3 線程的優(yōu)先級 (續(xù) ) —— 例 8_13修改后運(yùn)行結(jié)果 ? 運(yùn)行結(jié)果 Thread 1, tick = 50000 Thread 1, tick = 100000 Thread 1, tick = 150000 Thread 1, tick = 202000 Thread 0, tick = 50000 Thread 1, tick = 250000 Thread 1, tick = 300000 Thread 0, tick = 100000 Thread 1, tick = 350000 Thread 1, tick = 400000 Thread 0, tick = 150000 Thread 0, tick = 202000 Thread 0, tick = 250000 Thread 0, tick = 300000 Thread 0, tick = 350000 Thread 0, tick = 400000 ? 說明 – 具有較低優(yōu)先權(quán)的線程 0在線程 1沒有執(zhí)行完畢前也獲得了一部分執(zhí)行,但線程 1還是優(yōu)先完成了執(zhí)行 – Java虛擬機(jī)本身并不支持某個線程搶奪另一個正在執(zhí)行的具有同等優(yōu)先級線程的執(zhí)行權(quán) – 通常,我們在一個線程內(nèi)部插入 yield()語句,這個方法會使正在運(yùn)行的線程暫時放棄執(zhí)行,這是具有同樣優(yōu)先級的線程就有機(jī)會獲得調(diào)度開始運(yùn)行,但較低優(yōu)先級的線程仍將被忽略不參加調(diào)度 線程的優(yōu)先級 74 本章小結(jié) ? 本章內(nèi)容 – 線程的基礎(chǔ)知識 – 線程的生命周期 – 線程的優(yōu)先級 ? 本章要求 – 了解線程的概念 – 學(xué)會如何通過 Thread類和 Runnable接口創(chuàng)建線程,如何實現(xiàn)多線程的資源共享和通信,及如何控制線程的生命 – 掌握線程同步的方法 – 理解線程優(yōu)先級的概念,以及基于優(yōu)先級的線程調(diào)度
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1