![第13天多線程thread創(chuàng)建能夠描述Java中運(yùn)行原理_第1頁](http://file4.renrendoc.com/view/24fe254d2f81a6a196ac601631d9a76c/24fe254d2f81a6a196ac601631d9a76c1.gif)
![第13天多線程thread創(chuàng)建能夠描述Java中運(yùn)行原理_第2頁](http://file4.renrendoc.com/view/24fe254d2f81a6a196ac601631d9a76c/24fe254d2f81a6a196ac601631d9a76c2.gif)
![第13天多線程thread創(chuàng)建能夠描述Java中運(yùn)行原理_第3頁](http://file4.renrendoc.com/view/24fe254d2f81a6a196ac601631d9a76c/24fe254d2f81a6a196ac601631d9a76c3.gif)
![第13天多線程thread創(chuàng)建能夠描述Java中運(yùn)行原理_第4頁](http://file4.renrendoc.com/view/24fe254d2f81a6a196ac601631d9a76c/24fe254d2f81a6a196ac601631d9a76c4.gif)
![第13天多線程thread創(chuàng)建能夠描述Java中運(yùn)行原理_第5頁](http://file4.renrendoc.com/view/24fe254d2f81a6a196ac601631d9a76c/24fe254d2f81a6a196ac601631d9a76c5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
13CPUCPUJava使用的為搶占式調(diào)度。{String(Stringname){=name;}void for(inti=1;i<=20;i++{String(Stringname){=name;}void for(inti=1;i<=20;i++{}}voideat()for(inti=1;i<=20;i++) }}}classclassThreadDemopublicstaticvoidmain(Stringargsp=new System.out.println("聽完歌吃完飯了,該睡覺了}}dos窗口會(huì)看到不停的輸出”xx在吃第幾口飯”,這樣的語句。為什ThreadThread是程序中的執(zhí)行線程。Java法是將類為Thread的子類。該子類應(yīng)重寫Thread類的run方法。創(chuàng)建對象,開啟線程。runmain另法是一個(gè)實(shí)現(xiàn)Runnable接口的類。該類然后實(shí)現(xiàn)run方法。然后RunnableThreadrunpublicpublicclassDemo01publicstaticvoidmain(String[]args)MyThreadmtnewMyThread("http://在主方法中執(zhí)行forfor(inti=0;i<10;i++){}}}publicpublicclassMyThreadextendsThreadpublicMyThread(Stringname//調(diào)用父類的String}*重寫runpublicvoidrun()for(inti=0;i<10;i++){}}}runstartrunstart開啟線程,jvm調(diào)用run方法在開啟的線程中執(zhí)行。ThreadThread類?startThreadThreadt1=new在新的線程中運(yùn)行起來了,但是我們直接創(chuàng)建Thread對象,調(diào)用start方法,該start調(diào)用的是們需要讓線程執(zhí)行的代碼。[javarun方法執(zhí)行什么代碼,所有沒寫run方法]startrun方法呢?run方法中。所以想要一個(gè)新線程執(zhí)行我們的任務(wù),必須先要開啟線程,start方法,再由線程自動(dòng)run方法,run方法--------肯定程對象中,我們查閱一下Thread的主線程的線程對象是你創(chuàng)建的嗎?很明顯不是,JVMThread類的API文檔發(fā)現(xiàn)有個(gè)方法是獲取當(dāng)前正在運(yùn)行的線程對象。還classMyThreadclassMyThreadextendsThread{//繼承//復(fù)寫其中的runpublicvoidfor(inti=1;i<=20;i++){}}}classThreadDemopublicstaticvoidmain(String[]args)MyThreadd1=newMyThread();MyThreadd2=newD1.start();//沒有開啟新線程在主線程調(diào)用rund2.start();//開啟一個(gè)新線程,新線程調(diào)用run}}字順延。如Thread-1......創(chuàng)建線程方式—Runnable創(chuàng)建線程的另法是實(shí)現(xiàn)Runnable接口的類。該類然后實(shí)現(xiàn)run方法。然Runnable的子類對象,傳入到某個(gè)線程的構(gòu)造方法中,開啟線程。Runnable接口,RunableAPIRunnable接口說明文檔:Runnable接口用來指定每個(gè)線程要執(zhí)行的任務(wù)。包含了一個(gè)run的無參數(shù)抽象方法,需要由接口實(shí)現(xiàn)類重寫該方法。1Runnable2run3ThreadpublicpublicclassDemo02publicstaticvoidmain(String[]args)Runnablerunn=new//將Runnable接口的子類對象作為參數(shù)傳遞給ThreadThreadthread=newThread(runn);Threadthread2=newThread(runn);for(inti=0;i<10;i++){}}}publicpublicclassMyRunnableimplements//定義線程要執(zhí)行的runpublicvoidrun()for(inti=0;i<10;i++){}}}Runnable的原理和第式繼承Thread類,線程對象和線程任務(wù)耦合在一起。一旦創(chuàng)建Thread類的runnableRunnable類型。RunnablenewnewThread()publicvoidrun()for(intx=0;x<40;x++){+"...X...."+}}RunnableRunnabler=newRunnable()publicvoidrun()for(intx=0;x<40;x++){+"...Y...."+}}new院要賣票,我們模擬院的賣票過程。假設(shè)要的是“功夫熊貓3”,本次的座位共100個(gè)(本場只能賣100)??谝黄鹳u這100)publicpublicclassThreadDemopublicstaticvoidmain(String[]args)Ticketticket=new//3Threadt1=newThread(ticket,1");Threadt2=newThread(ticket,2");Threadt3=newThread(ticket,}}publicpublicclassTicketimplementsRunnable//100intticket=publicvoidrun()if(ticket>0)trytry}catch(InterruptedExceptione){}System.out.println(Thread.currentThread().getName()+"正在賣票:"+ticket--);}}}}0、-線程同步(java中提供了線程同步機(jī)制,它能夠解決上述的線程安全問題。同步代碼塊(同步鎖synchronized鎖對象}同步代碼塊:在代碼塊上synchronized鎖對象} publicpublicclassTicketimplementsRunnableintticket=Objectlock=newObject();publicvoidrun()synchronizedlock){if(ticket>0) try}catch(InterruptedExceptione){}"正在賣票ticket}}}}}publicpublicsynchronizedvoid} publicpublicclassTicketimplementsRunnable//100intticket=Objectlock=newObject();publicvoidrun()}}//同步方法,鎖對象publicsynchronizedvoidif(ticket>0)try}catch(InterruptedExceptione){}System.out.println(Thread.currentThread().getName()+"正在賣票:"+ticket--);}}}靜態(tài)同步方法:在方法上加上staticpublicpublicstaticsynchronizedvoid}靜態(tài)同步方法中的鎖對象是類名LockAPILock接口描述,Locksynchronized方法和語classclassXprivatefinalReentrantLocklock=newReentrantLock();publicvoidrun(){lock.lock();//blockuntilconditionholdstry{//...method}finally}}}publicclassTicketimplementsRunnable//100intpublicclassTicketimplementsRunnable//100intticket=//創(chuàng)建LockLockck=newpublicvoidrun()//sync
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 益陽師范高等專科學(xué)?!峨娔X效果圖制作》2023-2024學(xué)年第二學(xué)期期末試卷
- 中國傳媒大學(xué)《汽車美容與裝修》2023-2024學(xué)年第二學(xué)期期末試卷
- 黑龍江林業(yè)職業(yè)技術(shù)學(xué)院《工程CAD》2023-2024學(xué)年第二學(xué)期期末試卷
- 電影科技在醫(yī)療領(lǐng)域的應(yīng)用探索
- 蘇州大學(xué)《音樂課程標(biāo)準(zhǔn)與教材研究》2023-2024學(xué)年第二學(xué)期期末試卷
- 河南地礦職業(yè)學(xué)院《專業(yè)論文閱讀與寫作》2023-2024學(xué)年第二學(xué)期期末試卷
- 閩江師范高等??茖W(xué)?!秶H新聞作品案例解析》2023-2024學(xué)年第二學(xué)期期末試卷
- 柳州工學(xué)院《分布式通信與網(wǎng)絡(luò)》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京協(xié)和醫(yī)學(xué)院《茶學(xué)研究法》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣西現(xiàn)代職業(yè)技術(shù)學(xué)院《武術(shù)教學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- LS/T 1226-2022糧庫智能通風(fēng)控制系統(tǒng)
- GB/T 4927-2008啤酒
- 肺隔離癥醫(yī)學(xué)課件
- 第3課時(shí)-六宮格數(shù)獨(dú)課件
- 導(dǎo)游基礎(chǔ)知識(shí)課程標(biāo)準(zhǔn)
- 直線加速器專項(xiàng)施工方案
- 聯(lián)苯二氯芐生產(chǎn)工藝及產(chǎn)排污分析
- 儲(chǔ)能設(shè)備項(xiàng)目采購供應(yīng)質(zhì)量管理方案
- 美國房地產(chǎn)市場特征、框架與周期演變
- 光伏發(fā)電工程施工組織設(shè)計(jì)施工工程光伏發(fā)電工程光伏發(fā)電施工組織設(shè)計(jì)
- 民政局離婚協(xié)議書模板(4篇)
評論
0/150
提交評論