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

正文內(nèi)容

第七講多線程-資料下載頁(yè)

2024-08-31 21:49本頁(yè)面

【導(dǎo)讀】線程的生命周期及控制。線程的優(yōu)先級(jí)及調(diào)度。多線程的互斥與同步。并發(fā)現(xiàn)象在現(xiàn)實(shí)生活中大量存在。編程語(yǔ)言一般提供了串行程序設(shè)計(jì)的方法。計(jì)算機(jī)的并發(fā)能力由操作系統(tǒng)提供。Java在語(yǔ)言級(jí)提供多線程并發(fā)的概念。及一個(gè)順序執(zhí)行的序列,在程序執(zhí)行過(guò)程中的任何指定時(shí)刻,的,這就是所謂的多線程。完成不同的功能。兩者的粒度不同,是兩個(gè)不同層次上的概念。不同進(jìn)程的代碼、內(nèi)部數(shù)據(jù)和狀態(tài)都是完全獨(dú)立的,而。資源,有可能互相影響。線程本身的數(shù)據(jù)通常只有寄存器數(shù)據(jù),以及一個(gè)程序執(zhí)。行時(shí)使用的堆棧,所以線程的切換比進(jìn)程切換的負(fù)擔(dān)要小。多線程編程簡(jiǎn)單,效率高。是十分困難的,因?yàn)樗鼈儗?duì)數(shù)據(jù)同步的支持不充分。供了Thread類來(lái)實(shí)現(xiàn)多線程。實(shí)現(xiàn)線程體的特定對(duì)象是在初始化線程時(shí)傳遞。在一個(gè)線程被建立并初始化以后,Java的運(yùn)行時(shí)系統(tǒng)就自。group指明了線程所屬的線程組;name是線程的名稱。為null,表示這個(gè)實(shí)例本身具有線程體。

  

【正文】 ducer p1 = new Producer(c, 1)。 //資源生產(chǎn)者 Consumer c1 = new Consumer(c, 1)。 //資源消耗者 ()。 ()。 ()。 ()。 } } class Producer extends Thread { private CubbyHole cubbyhole。 private int number。 public Producer(CubbyHole c, int number) { cubbyhole = c。 = number。 } public void run() { for (int i = 0。 i 10。 i++) { (i)。 (Producer + + put: + i)。 try{ sleep((int)(() * 100))。 } catch (InterruptedException e) { } } } } class Consumer extends Thread { private CubbyHole cubbyhole。 private int number。 public Consumer(CubbyHole c, int number) { cubbyhole = c。 = number。 } public void run() { int value = 0。 for (int i = 0。 i 10。 i++) { value = ()。 (Consumer + + got: + value)。 } } } class CubbyHole { private int seq。 private boolean available = false。 //信號(hào)量 public synchronized int get() { while (available == false) { try { wait()。 // waits for notify() call from Producer }catch (InterruptedException e){ } } available = false。 notify()。 return seq。 } } public synchronized void put(int value) { while (available == true) { try{ wait()。 // waits for notify() call from consumer }catch (InterruptedException e){ } } seq = value。 available = true。 notify()。 } … get()方法在讀信息之前先等待,直到信息可讀,讀完后通知要寫的線程。 put()方法在寫信息之前先等待,直到信息被取走,寫完后通知要讀的進(jìn)程。 如果一個(gè)線程持有一個(gè)鎖并試圖獲取另一個(gè)鎖時(shí),就有死鎖的危險(xiǎn)。 死鎖是資源的無(wú)序使用而帶來(lái)得,解決死鎖問(wèn)題的方法就是給資源施加排序。 note編號(hào)為 1, pen編號(hào)為 2,線程1和線程 2都必須先獲得 1號(hào)資源后方可再獲取 2號(hào)資源。 線程 2 pen 線程 1 note 把“ pen”給我 ,我 才能給你“ note” 把“ note”給我 ,我 才能給你“ pen” 多線程的互斥與同步 —— 死鎖問(wèn)題 守護(hù)線程 (Daemon) 在客戶 /服務(wù)器模式下,服務(wù)器的作用是持續(xù)等待用戶發(fā)來(lái)請(qǐng)求,并按請(qǐng)求完成客戶的工作。 客戶端 服務(wù)器端 request daemon 守護(hù)線程是為其它線程提供服務(wù)的線程,它一般應(yīng)該是一個(gè)獨(dú)立的線程,它的 run()方法是一個(gè)無(wú)限循環(huán)。 可以用方法 public boolean isDaemon()確定一個(gè)線程是否守護(hù)線程,也可以用方法 public void setDaemon( boolean )來(lái)設(shè)定一個(gè)線程為守護(hù)線程。 守護(hù)線程與其它線程的區(qū)別是,如果守護(hù)線程是唯一運(yùn)行著的線程 ,程序會(huì)自動(dòng)退出。 ? 一般當(dāng)最后一個(gè)線程結(jié)束時(shí), Java程序才退出 ? 守護(hù)線程的存在不影響 Java程序的退出 ? setDaemon(true) ? 使線程成為守護(hù)線程(必須在 start之前調(diào)用) ? setDaemon(false) ? 使線程成為一般線程(必須在 start之前調(diào)用) ? 守護(hù)線程一般不能用于執(zhí)行關(guān)鍵任務(wù) ? 任務(wù)未執(zhí)行完,線程就可能被強(qiáng)制結(jié)束 ? 守護(hù)線程一般用來(lái)做輔助性工作 ? 提示,幫助等 守護(hù)線程 (Daemon) 線程組 (ThreadGroup) ? 把一組線程統(tǒng)一管理 ? 例如對(duì)一組線程同時(shí)調(diào)用 interrupt ? 構(gòu)造方法 ? ThreadGroup(String groupName) ? ThreadGroup(ThreadGroup tg, String groupName) ? 線程組可以遞歸 ? 聲明線程的線程組 ? 缺省創(chuàng)建的線程與父線程同組 ? Thread(ThreadGroup tg, Runnable ro) ? Thread(ThreadGroup tg, Runnable ro, String threadName) ThreadGroup0 ThreadGroup1 ThreadGroup2 Thread Thread 線程組 (ThreadGroup) ? int activeCount() ? 線程組下的所有活動(dòng)線程數(shù)(遞歸) ? int enumerate(Thread[] list[, boolean recursive]) int enumerate(ThreadGroup[] list[, boolean recursive]) ? 線程組下的所有活動(dòng)線程數(shù)(遞歸) ? getMaxProirity / setmaxProirity ? 獲得 / 設(shè)置 線程組中線程的最大優(yōu)先級(jí) ? getName ? 獲得線程組的名字 ? getParent / parentOf ? 獲得 / 判斷 線程父子關(guān)系 線程組 (ThreadGroup) 小結(jié) 1. 實(shí)現(xiàn)線程有兩種方法: ? 實(shí)現(xiàn) Ruannable接口 ? 繼承 Thread類 2. 當(dāng)新線程被啟動(dòng)時(shí), Java運(yùn)行系統(tǒng)調(diào)用該線程的 run()方法,它是 Thread的核心。 3. 線程有四個(gè)基本狀態(tài):創(chuàng)建、可運(yùn)行、不可運(yùn)行、死亡。 4. 在 Applet中通常在其 start()方法中創(chuàng)建線程,在 stop()方法中終止線程。 5. 線程間的通信方式有兩種:管道流和共享中間類。 6. 兩個(gè)或多個(gè)線程競(jìng)爭(zhēng)資源時(shí),需要用同步的方法協(xié)調(diào)資源。 7. 多個(gè)線程執(zhí)行時(shí),要用到同步方法,即使用synchronized的關(guān)鍵字設(shè)定同步區(qū)。 8. wait和 notify起協(xié)調(diào)作用。 小結(jié) 下一講內(nèi)容 —— 圖形用戶界面與事件處理 1 使用 AWT(Abstract Window Toolkit)構(gòu)件 2 包含 構(gòu)件的 構(gòu)件 —— 構(gòu)件容器( container) 3 外觀的管理與控制 4 事件與事件處理 5 AWT中的各種構(gòu)件 6 各種構(gòu)件的應(yīng)用實(shí)例 下課!
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1