交大JAVA講義Java線程PPT學習教案_第1頁
交大JAVA講義Java線程PPT學習教案_第2頁
交大JAVA講義Java線程PPT學習教案_第3頁
交大JAVA講義Java線程PPT學習教案_第4頁
交大JAVA講義Java線程PPT學習教案_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、會計學1交大交大JAVA講義講義Java線程線程2第1頁/共41頁3文件輸入輸出裝置各種系統(tǒng)資源數(shù)據(jù)區(qū)段程序區(qū)段只有一個地方在執(zhí)行文件輸入輸出裝置各種系統(tǒng)資源數(shù)據(jù)區(qū)段程序區(qū)段同時有數(shù)個地方在執(zhí)行傳統(tǒng)的進程多線程的任務第2頁/共41頁4第3頁/共41頁5第4頁/共41頁6第5頁/共41頁7第6頁/共41頁8第7頁/共41頁9第8頁/共41頁10new Thread()New ThreadRunnablestart()Not Runnablestop()stop()Deadyield()stop() orrun()exit. .suspend()sleep()wait()resume().第9頁/

2、共41頁11線程狀態(tài)及狀態(tài)轉(zhuǎn)換示意圖 第10頁/共41頁12第11頁/共41頁13第12頁/共41頁14第13頁/共41頁15,第14頁/共41頁16客戶端 服務器端requestdaemon第15頁/共41頁17線程1線程2線程10資源取過來加1后送回去withdrwal()withdrwal()透支余額變量第16頁/共41頁18withdrawal()線程1監(jiān)視器線程2第17頁/共41頁19readwrite監(jiān)視器線程1線程2第18頁/共41頁20第19頁/共41頁21生產(chǎn)者消費者.共享對象writeread可能出現(xiàn)的問題: 生產(chǎn)者比消費者快時,消費者會漏掉一些數(shù)據(jù)沒有取到 消費者比生產(chǎn)者

3、快時,消費者取相同的數(shù)據(jù). notify()和wait ()方法用來協(xié)調(diào)讀取的關(guān)系. notify()和wait ()都只能從同步方法中的調(diào)用.第20頁/共41頁22第21頁/共41頁23第22頁/共41頁24class MessageBoard private String message; private boolean ready = false;/(信號燈) public synchronized String read() while (ready = false) try wait(); catch (InterruptedException e) ready = false; n

4、otify(); /起始狀態(tài)先寫后讀return message; public synchronized void write(String s) while (ready = true) try wait(); catch (InterruptedException e) message = s; ready = true; notify(); 第23頁/共41頁25第24頁/共41頁26class Writer extends Thread private MessageBoard mBoard; private String messages = Monday :-,“.”,Sunda

5、y : -; public Writer(MessageBoard m) mBoard = m; public void run() for (int i = 0; i messages.length; i+) mBoard.write(messages i ); System.out.println(Writer wrote: + messagesi ); try sleep(int)(Math.random() * 100); catch (InterruptedException e) mBoard.write(logoff); 第25頁/共41頁27量施加排序線程2pen線程1mone

6、y把“pen”給我,我才能給你“note”把“money”給我,我才能給你“pen”第26頁/共41頁28線程1PipedOutputStream PipedInputStream輸出流outStream輸入流inStream線程2第27頁/共41頁29線程2線程1中間類mssm.write(s)s=m.read()write()read()printStream DataInputStream第28頁/共41頁30PipedInputStream(outStream);new Writer( outStream ).start();new Reader( inStream ).start()

7、;第29頁/共41頁31n(threadPipethread.class)主類Pipethread輔類Writer線程類輔類Reader線程類管道流將數(shù)據(jù)寫到輸出流從流中讀數(shù)據(jù)輸入流作為參數(shù)傳給WriterWriter( outStream )第30頁/共41頁32public class Pipethread public static void main(String args) Pipethread thisPipe = new Pipethread(); thisPcess(); public void process() PipedInputStream inStrea

8、m; PipedOutputStream outStream; PrintStream printOut; try outStream = new PipedOutputStream(); inStream = new PipedInputStream(outStream); new Writer( outStream ).start(); new Reader( inStream ).start(); catch( IOException e ) 第31頁/共41頁33class Reader extends Thread private PipedInputStream inStream;

9、/從中讀數(shù)據(jù) public Reader(PipedInputStream i) inStream = i; public void run() String line; DataInputStream d; boolean reading = true; try d = new DataInputStream( inStream ); while( reading & d != null) tryline = d.readLine(); if( line != null ) System.out.println( ”Read: + line ); else reading = false;

10、catch( IOException e) catch( IOException e ) System.exit(0); try Thread.sleep( 4000 ); catch( InterruptedException e )第32頁/共41頁34class Writer extends Thread private PipedOutputStream outStream;/將數(shù)據(jù)輸出 private String messages = Monday, Tuesday , Wednsday,Thursday,Friday :, Saturday:,Sunday :; public W

11、riter(PipedOutputStream o) outStream = o; public void run() PrintStream p = new PrintStream( outStream ); for (int i = 0; i messages.length; i+) p.println(messages i ); p.flush(); System.out.println(WrIte: + messagesi ); p.close(); p = null; 第33頁/共41頁35和喚醒第34頁/共41頁36第35頁/共41頁37,個進程壟斷控制權(quán)thread.setPri

12、ority(Thread.MAX_PRIORITY)第36頁/共41頁38/多個進程運行時執(zhí)行順序是交叉的class multithread extends Thread int threadNum; public static void main(String args) multithread array=new multithread3; for (int i=0;i3;i+) arrayi=new multithread(i); for (int i=0;i3;i+) arrayi.start(); multithread(int SerialNum) super(); threadNum=SerialNum; publ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論