




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課前思課前思線程和進(jìn)程的區(qū)線程是如何調(diào)度多個(gè)線程是如何進(jìn)行互斥和同步的如何讓程序在瀏覽器中運(yùn)行Applet2第六講 Java的線程和1學(xué)習(xí)指掌握線程之間的相 度關(guān)系,尤其是通過線程睡眠來使其它線程獲得執(zhí)行學(xué)習(xí)指掌握線程之間的相 度關(guān)系,尤其是通過線程睡眠來使其它線程獲得執(zhí)行機(jī)會的機(jī)制,以及互斥和同步的實(shí)現(xiàn)機(jī)4學(xué)習(xí)目度和控制方法,清楚地理解多線程的互斥和同步的實(shí)現(xiàn)原理,以及多線程的應(yīng)3第十一章6難點(diǎn)和第十一章6難點(diǎn)和重多線程的調(diào)度和多線程的互斥和5虛擬的CPU虛擬的CPU,封裝在java.lang.ThreadCPU所執(zhí)行的代碼,傳遞給Thread類CPU所處理的數(shù)據(jù),傳遞給Thread類8一個(gè)
2、線程是一個(gè)程序 的順序控制流線程和進(jìn)多進(jìn)程:在操作系統(tǒng)中,能同時(shí)運(yùn)行多個(gè)任(程序)7線程的狀線程的狀即run( )方法運(yùn)行結(jié)束。9線程的狀態(tài)(新版本yield(線程的狀態(tài)(新版本yield( )new線程的狀態(tài)(舊版本阻塞狀態(tài)調(diào)阻塞狀態(tài)調(diào)用了sleep()方法輸入輸出流中發(fā)生線程阻塞狀態(tài)自然撤消(線程執(zhí)行完創(chuàng)建狀態(tài)(newThreadmyThread=newMyThreadClass((注意:MyThreadClass是Thread的子類可運(yùn)行狀態(tài)RunnableThread myThread=new MyThreadClass(); myThread.start( );線程體的構(gòu)public
3、線程體的構(gòu)publicThread(ThreadGroupgroup,Stringname線程調(diào)用sleep()方法主動放棄為等候一個(gè)條件變量,線程調(diào)用wait()方法通過繼承類Thread通過繼承類Thread構(gòu)造線程class SimpleThread extends publicSimpleThread(Stringpublicvoidrun()fori=0;i10; System.out.prln(i+getName(); try )(Math.random() * catch 構(gòu)造線程體的2中的方法run( );run( )。0024ln(DONE!+public class Two
4、ThreadsTest publicicvoidmain(String new SimpleThread(通過接口構(gòu)造通過接口構(gòu)造線publicclassClockextendsjava.applet.Applet implements Runnable public void start() if(clockThread=clockThread=new 67DONE! Second (Graphics Date now = new Date(); g.drawString(now.getHours()+:+now.getMinutes() +now.getSeconds(), 5, publ
5、icvoidstop()clockThread = null;publicvoidrun()while (clockThread != repatry catcherruptedException 線程的調(diào)線程的調(diào)時(shí)間片方非時(shí)間片方不能再從其他類繼承編寫簡單,可以直線程,無需使Thread.currentThread()線程調(diào)度隊(duì)列(Runnable隊(duì)列。線程線程線程線程線程線程調(diào)度隊(duì)列(Runnable隊(duì)列。線程線程線程線程線程優(yōu)先級為優(yōu)先級為優(yōu)先級為線程的優(yōu)先voidclass MyThread extendsclass MyThread extends StringMyThread(St
6、ringmessagethis.message=publicvoidrun()fori=0;i3;i+getPriority() );classpublicicvoidmain(Stringargs Thread t1 = new MyThread(T1); t1.start( );Thread t2 = new MyThread(T2); t2.start( );Thread t3 = new MyThread(T3); t3.start( );使其他同優(yōu)先級(調(diào)用yield( )方法)和低優(yōu)先級(調(diào)用sleep( )方法)的線程得到運(yùn)行結(jié)果T2 T2 T2 T3 T3 T3 T1 T1 T
7、1 線程的暫停線程的暫停和恢sleep()方publicvoidtt.join();/等待線程tt執(zhí)行完后再繼續(xù)往下基本的線程控終止線線程執(zhí)行完其run()測試線程狀importclassimportclassDaemonThread private sicfinal privateThreadt=newThreadSIZE; public Daemon()publicvoidyield()的Runnable隊(duì)列的最后,然后從該隊(duì) 列 class DaemonSpawn extends ThreadpublicDaemonSpawn( class DaemonSpawn extends Thr
8、eadpublicDaemonSpawn(publicln(DaemonSpawn run()while(true) publicclassDaemonspublicicvoidargs) Thread d=new Daemon(); BufferedReader stdin=new try catch(IOException public pop() idx-; public pop() idx-; 兩個(gè)線程A和B在同時(shí)使用Stack的同一個(gè)實(shí)例對象, A正在往堆棧里push一個(gè)數(shù)據(jù),B則要從堆棧中pop操作之前data=|p |q| | | | data = | p | q | r | |
9、 | |多線程的互斥與臨界資源問chardata=newpublicvoidpush(char c) dataidx = c; 在Java語言在Java語言中,引入了對象互斥鎖的概念,來一個(gè)線程 該對象。關(guān)鍵字synchronized來與對象的互斥鎖聯(lián)系。象在任一時(shí)刻只能由一個(gè)線程 。data=|p|q|r| | | data = | p | q | r | | , | |最后的結(jié)果相當(dāng)于r沒有入棧如果synchronized用在類中,則表明該publicvoidis) dataidx=c; publiccharreturnpublic synchronized char pop()while
10、(index=0)erruptedException 多線程的同SyncStackprivate index = 0;privatecharbuffer=newpublicsynchronizedvoidpush(char c) while(index = buffer.length) tryerruptedException class class Producer implements RunnableSyncStacktheStack;s) theStack = s;index- -;returnclass Consumer implements RunnableSyncStackthe
11、Stack;class Consumer implements RunnableSyncStacktheStack;s) theStack = s;public run()chari=0;i20;c=(char)(Math.random()*26+A); ln(Produced:+c); try Thread.sleep(erruptedException publicclasspublicclasspublic sic void main(String args)SyncStackstack=newSyncStack(); Runnable source=new Producer(stack
12、);Runnablesink=new Consumer(stack); Thread t1 = new Thread(source); Thread t2 = new Thread(sink); t1.start();public run()charc = theStack.pop(); erruptedException wati的作用: 已持有的鎖,進(jìn)入wait隊(duì)列程序執(zhí)行結(jié)publicclassXyzimplements privatepublic void run() while(!timeToQuit) /cleanupbeforerun()suspend()和JavaAppletJ
13、avaAppletpublic void publicclassprivateRunnabler=newXyz(); private Thread t=new Thread(r); public void startThread() publicvoidstopThread()/usespecificinstanceofXyz AppletoWorld.java AppletoWorld.java 源程序: importjava.awt.Graphics; import oWorldextendsStringhw_text; public void init () hw_text = appl
14、ication是從其中的main()方法開始運(yùn)行 Applet是在瀏覽器中運(yùn)行的,必須創(chuàng)建一個(gè) Applet為運(yùn)行Applet為運(yùn)行Applet需要編寫相應(yīng)的HTML文件paramname=appleparam tribute2 publicvoid(Graphicsg)o publicvoid同時(shí)是Applet與例import java.awt.*; public class AppletApp extends publicvoidmain(Stringargs) AppletApp app=new AppletApp(); Applet的AWT繪Applet的AWT繪(進(jìn)行繪圖的具體操作,
15、必須重update(用于更新圖形,先清除背景、前景,再調(diào)用(變或位置移動時(shí),repa ( )方法立即被系統(tǒng)自class WindowControl extends Appletpublic WindowControl(Applet public void windowClosing(WindowEvent c.destroy(java.awt.Graphicsupdate()和()的參支持java.awt.Graphicsupdate()和()的參支持基本的繪圖和畫void drawLine( ) void drawArc( ) void drawRect( )void fill3DRect(
16、 )voidfillOval(Applet的AWTrepa ( AWTate() arl pa ( (Applet 的AWT繪Applet 的AWT繪制import java.awt.*; import java.applet.*;publicclassArcTestextendsAppletimplements WindowListener pulic void init()ArcCanvasc=newjava.awt.GraphicsvoiddrawBytes() voiddrawChars() voiddrawString(publicvoidwindowDeactivated(Wind
17、owEventpublicvoidwindowDeactivated(WindowEvente) publicvoidwindowDeiconified(WindowEvente) public void windowIconified(WindowEvent e) public void windowOpend(WindowEvent e) publicicvoidmain(StringFramef=newFrame(“ArcTest”); ArcTest arcTest=new ArcTest(); add(“South”,controls=new publicstart()publics
18、top()publicvoidwindowActivated(WindowEvente) public void windowClosed(WindowEvent e) public void windowClosing(WindowEvent e)System.exit(0); if(filled) 1,startAngle,endAngle); else g.drawArc(0,0,r.width-1,r.height- 1,startAngle, endAngle);class ArcCanvas extends Font font;public void pag) Rectangle
19、public void redraw(end) this.filled=filled; public void redraw(end) this.filled=filled; classArcControlsextendsPanelimplements ActionListener TextFiled s; TextFiled e; public void actionPerformed(ActionEventpublic void actionPerformed(ActionEvent Stringpublic ArcControls(ArcCanvas Button b=null; add(s=new TextField(“0”,4); b=new Button(“Fill”); b=new Button(“Draw”); 同頁Applet間的通同頁Applet間的通public AppletContext 取得名為name的Applet對public abstract Applet getApplet(String 得到當(dāng)前頁中所有Applet對public abstract Enumeration Ap
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國際商業(yè)設(shè)計(jì)師創(chuàng)意流派考核題及答案
- 快閃項(xiàng)目在廣告設(shè)計(jì)中的應(yīng)用探討試題及答案
- 復(fù)習(xí)一覽表的紡織工程師試題及答案
- 檢驗(yàn)招聘筆試試題及答案
- 2024年紡織工程師證書考試高效學(xué)習(xí)試題及答案
- 2024年紡織品檢驗(yàn)員證書考試形式試題及答案
- 2024年國際商業(yè)美術(shù)設(shè)計(jì)師考試品牌設(shè)計(jì)思考試題及答案
- 淮北中考英語試題及答案
- 廣告設(shè)計(jì)的市場營銷策略 試題及答案
- 洛陽一模語文試題及答案
- 大學(xué)生志愿服務(wù)西部計(jì)劃考試復(fù)習(xí)題庫(筆試、面試題)
- 《建筑制圖與識圖》課程標(biāo)準(zhǔn)
- 客貨線鐵路隧道錨桿施工作業(yè)指導(dǎo)書
- 箱涵工程監(jiān)理實(shí)施細(xì)則
- 公路養(yǎng)護(hù)的高級工復(fù)習(xí)題
- 三人合伙經(jīng)營協(xié)議書 doc 三人合伙經(jīng)營協(xié)議書實(shí)用版(六篇)
- 葡萄酒品嘗學(xué)第八章-2013
- JJF 1793-2020海水營養(yǎng)鹽測量儀校準(zhǔn)規(guī)范
- GB/T 20080-2017液壓濾芯技術(shù)條件
- 超音速流動與燃燒的大渦模擬基礎(chǔ)課件
- 歸檔文件目錄
評論
0/150
提交評論