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

正文內(nèi)容

java多線程ppt課件(完整版)

  

【正文】 ead 1)。 ? 【 實(shí)例 82】 1. class myThread extends Thread{ 2. int sleeptime。被掛起、或處于消息等待狀態(tài)的線程則必須由一外來事件喚醒。處于就緒狀態(tài)的線程事實(shí)上己被調(diào)度,也就是說,它們己經(jīng)被放到某一隊(duì)列等待執(zhí)行。 5. curr=( )。 – resume( ) : 將暫停的線程繼續(xù)執(zhí)行。 多線程編程中常用的常量和方法 ? 常用方法: – currentThread( ): 返回當(dāng)前運(yùn)行的線程對(duì)象,是一個(gè)靜態(tài)的方法。 ? 線程是共享地址空間的,也就是說多線程可以同時(shí)讀取相同的地址空間,并且利用這個(gè)空間進(jìn)行交換數(shù)據(jù)。 多線程的概念 ? 多線程具有以下特點(diǎn): – ( 1)多個(gè)線程在運(yùn)行時(shí),系統(tǒng)自動(dòng)在線程之間進(jìn)行切換; – ( 2)由于多個(gè)線程共存于同一塊內(nèi)存,線程之間的通信非常容易; – ( 3) Java將線程視為一個(gè)對(duì)象。 – sleep(int n) : 使當(dāng)前運(yùn)行的線程睡 n個(gè)毫秒,然后繼續(xù)執(zhí)行,也是靜態(tài)方法。 – setName(String s) :賦予線程一個(gè)名字。 6. (num)。處于就緒狀態(tài)的線程何時(shí)可真正執(zhí)行,取決于線程優(yōu)先級(jí)以及隊(duì)列的當(dāng)前狀況。 ? “Dead”(死亡)狀態(tài) : – Dead表示線程巳退出運(yùn)行狀態(tài),并且不再進(jìn)入就緒隊(duì)列。 3. public myThread(String id) { // 構(gòu)造函數(shù) 4. super(id)。 23. t2=new myThread(Thread 2)。 創(chuàng)建多線程的方法 ? 2.通過實(shí)現(xiàn) Runnable接口實(shí)現(xiàn)多線程 – ( 1)定義一個(gè)實(shí)現(xiàn) Runnable接口的類。 6. } 7. public void run(){ 8. while(true){ 9. (線程 + number + :計(jì)數(shù) + count)。 資源的協(xié)調(diào)與同步 ? 線程調(diào)度模型 ? 資源沖突 ? 同步方法 線程調(diào)度模型 ? 當(dāng)計(jì)算機(jī)中只有一個(gè) CPU時(shí),同一時(shí)刻正在運(yùn)行的線程只能有一個(gè),當(dāng)一個(gè)新的線程通過 new()創(chuàng)建并通過 start()方法啟動(dòng)后,線程只是進(jìn)入就緒狀態(tài),是否能運(yùn)行要看調(diào)度的結(jié)果。 1. class myThread extends Thread{ 2. myThread(String str){ super(str)。 17. ()。 4. try{(3)。 19. } 20.} ? 【 實(shí)例 86】 class ThreadClash { 22. public static void main(String args[ ]) { 23. myThread Obj=new myThread( )。 ? 可以通過 private 關(guān)鍵字來保證數(shù)據(jù)對(duì)象只能被方法訪問 ? synchronized 關(guān)鍵字:鎖定沖突的方法和鎖定沖突的對(duì)象。它只表示如果兩個(gè)線程正在等待相同的鎖,則它們不能同時(shí)執(zhí)行該代碼。 – 格式為: public synchronized void accessVal(int newVal)。 7. } 8. } 9. private static class Thread2 extends Thread { 10. public synchronized void run() { 11. x= y =1。語(yǔ)法如下: synchronized(syncObject) { //允許訪問控制的代碼 } – synchronized 塊是這樣一個(gè)代碼塊,其中的代碼必須獲得對(duì)象 syncObject (如前所述,可以是類實(shí)例或類)的鎖方能執(zhí)行,具體機(jī)制同前所述。 17. } 18. } 19. } 20. public static void main(String[] args) { 21. new Thread1().run()。 7. flag=true。i++) 24. ((int)(( )*100))。 40. Thread t2=new Thread(new Consumer(shc))。很明顯,這種情況并不是我們所期望的。也可以執(zhí)行對(duì)象 O的 notifyALL(),對(duì)象O的 wait池中所有線程放入 O的等鎖池中。 3. synchronized int get() { 4. (Get: +n)。 20. while(true) {(i++)。 38. (Press controlC to stop.)。 36. new Producer(q)。 25. Consumer(Queue q) { 26. =q。 6. } 7. synchronized void put(int n) { 8. =n。第二種形式為不帶參數(shù),代表 wait()在 notify()或notifyAll()之前會(huì)持續(xù)阻塞。這些方法作為 Object的 final方法來實(shí)現(xiàn),因此所有類都包含有它們。 42. ( )。 29. Consumer(shareClass c) { 30. shc=c。 9. } 10. void get( ) { 11. while(!flag) { } 12. flag=false。 23. } 24.} 線程間通信 ? 多線程通信的方法有兩種: – 1. 把共享變量和方法封裝在一個(gè)類中實(shí)現(xiàn); – 2. 通過 wait( )和 notify( )方法實(shí)現(xiàn)。 ? 【 實(shí)例 88】 1. public class SyncThreads2{ 2. private static int x, y。 13. } 14. } 15. public static void main(String[] args) { 16. new Thread1().run()。這種機(jī)制確保了同一時(shí)刻對(duì)于每一個(gè)類實(shí)例,其所有聲明為 synchronized 的成員函數(shù)中至多只有一個(gè)處于可執(zhí)行狀態(tài)(因?yàn)橹炼嘀挥幸粋€(gè)能夠獲得該類實(shí)例對(duì)應(yīng)的鎖),從而有效避免了類成員變量的訪問沖突(只要所有可能訪問類成員變量的方法均被聲明為 synchronized)。 – 每個(gè) class也有一個(gè) “ 鎖標(biāo)志 ” 。當(dāng)對(duì)象的一個(gè)線程訪問了對(duì)象的某個(gè)synchronized數(shù)據(jù)時(shí),這個(gè)對(duì)象就將被 “ 上鎖 ” – 被
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1