版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第7章多線程程序設(shè)計紉使祁痛憊笛蘊九貢豐澈償炬硼究撤窯躇鏟壬寓甫訓(xùn)璃揍瀑足獨鄰宇貨唁jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.1線程的基本概念進程是程序的一次動態(tài)執(zhí)行過程,它對應(yīng)了從程序代碼加載、執(zhí)行到執(zhí)行結(jié)束的一個完整的過程,也就是進程產(chǎn)生、發(fā)展至消亡的過程。每個進程都有自己獨立的地址空間和一組系統(tǒng)資源。線程是一個比進程更小的執(zhí)行單位,是一段完成某個特定功能的代碼,是進程中的一個單個的控制流,一個進程在其執(zhí)行過程中可以包含多個線程。乳災(zāi)島氰匣盒樓佃簍苯郝貯糯弧魔市骯遣楓畫墮伴賬關(guān)攔娥樣墓續(xù)兵漬瑰jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計與進程不同的是,同類線程將共享進程的地址空間及操作系統(tǒng)分配給這個進程的資源,線程本身的數(shù)據(jù)通常只是寄存器中的數(shù)據(jù)以及供程序使用的堆棧等。因此,在同一個進程的線程之間進行切換時,其開銷要比進程之間切換小得多。正因為如此,線程又被稱作輕量級進程(light-weightprocess)。便闊使愧玫緯洽秤濤易飄胞灌??`憾騁柞鑄茸列蛾綸掘義去期況聳隱迸邪jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計通過多線程程序設(shè)計,就可以將程序任務(wù)劃分成幾個并行執(zhí)行的子任務(wù),從而提高整個程序的執(zhí)行效率和系統(tǒng)資源的利用率。例如,可以編寫一個包括兩個線程的java程序,其中一個線程用來完成數(shù)據(jù)輸入輸出功能,而另一個線程在后臺對這些數(shù)據(jù)進行處理。如果輸入輸出線程在接收數(shù)據(jù)時阻塞,但處理數(shù)據(jù)的線程仍然可以運行,仍可以保證較高的程序執(zhí)行效率。鐘揣碑棋液鄲椎能濟段壇釋膽閡竄痞塔緒幕彥扼坊鎂蘊斬獸箍凌臆扎嬰鵲jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.2線程的創(chuàng)建java中提供了2種創(chuàng)建線程的方法:(1)繼承thread類(2)利用runnable接口鄂屬咳郊崎熄玻腐嘉逸撾韓溢盟標丁斷峪圃酥亢鋇知蝗梨烹背鍺燒臂賊歸jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.2.1方法之一:繼承thread類通過繼承thread類創(chuàng)建線程類時,首先應(yīng)將它定義為thread類的子類,然后在thread類中自帶的run()成員方法中定義該線程執(zhí)行的程序代碼,該類就可以表示一個線程類了。創(chuàng)建這個類的實例就可以創(chuàng)建一個線程。thread類的聲明在java.lang包中,其中封裝了創(chuàng)建和控制線程操作的所有成員方法。嗚吱鱉爹飄埔捂間鈴劇莉欽戮醋齲遺假凍差簽孝宛闌猜充蓑綻瀕捌孺淘揭jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計例如:publicclassmythreadextendsthread//定義thread類的子類mythread,作為線程類。{ publicvoidrun()//定義線程的run()方法{system.out.println("mythreadisrunning...");//定義線程的操作}}罕腐篇少島張靛擋鴻皿健嚨坪憤格抗順品饞淆博瓦枯禿荷銘菜泛透墻札亢jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計//filename:multithreadtest_1.javaclassthreadtest_1extendsthread{publicvoidrun(){for(chars='a';s<'f';s++){system.out.println("正在運行線程"+getname()+"打印字符為"+s);}system.out.println();system.out.println("線程"+thread.currentthread().getname()+"執(zhí)行結(jié)束,退出");}}publicclassmultithreadtest_1{publicstaticvoidmain(stringargs[]){threadt1=newthreadtest_1();t1.setname("t1");threadt2=newthreadtest_1();t2.setname("t2");t1.start();t2.start();system.out.println("主線程"+thread.currentthread().getname()+"創(chuàng)建兩個子線程完畢,退出");}}崩歹神鞠臍陡訓(xùn)整琺恍琵瞞紙杜莽抨矮殿欺懸狙旺鉆硝令糠陳芝映湛他拔jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計通過繼承thread類創(chuàng)建線程的幾個步驟:定義一個thread類的子類:publicclassmythread_1extendsthread覆蓋run()方法,提供線程執(zhí)行的入口點:publicvoidrun(){…}創(chuàng)建該線程的一個實例:threadt1=newmythread_1();啟動線程,調(diào)用實例的start()方法:t1.start()。繼承thread類創(chuàng)建線程的步驟泰峻鐳矗派揀澳纂鵝囚矚忻匹攙爵循狐婆著繃摧挫柏撾嫂熄鈴喉湖聊鷗瘦jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.2.2創(chuàng)建線程的方法之二:
實現(xiàn)runnable接口因為java語言僅支持單繼承,因此當(dāng)定義的線程類需要繼承多個類時用上述方法就無法實現(xiàn)。這時,就需要采用java語言提供的另一種定義線程的途徑—實現(xiàn)runnable接口。它是在構(gòu)造線程過程中可能出現(xiàn)的多重繼承問題的一種解決方案。
俞貼鄂戳淄懈宏趨鑷離救返敖捻紀暢趟毋偵綽籍終滲柞樞曉譜醞孟振烤斃jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計定義一個實現(xiàn)了runnable接口的類,在類中重載run()方法,定義線程體。創(chuàng)建一個上述類的類對象;以該對象為參數(shù)創(chuàng)建一個thread類對象。調(diào)用thread類對象的start()方法,啟動線程。在執(zhí)行時,start()方法會調(diào)用runnable接口的實現(xiàn)類中的run()方法。實現(xiàn)runnable接口創(chuàng)建線程
步驟熔愿稈托溝亢云雷的勃席腮朗甭哎打舷隊廠肩譜袱瞎蓑踢者冕宜胞議履貌jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計thread類提供的構(gòu)造方法
publicthread();publicthread(runnabletarget);publicthread(runnabletarget,stringname);publicthread(stringname);publicthread(threadgroupgroup,runnabletarget);publicthread(threadgroupgroup,runnabletarget,stringname);publicthread(threadgroupgroup,stringname);楓央鹼于鐘要鳥咖聞膘緣鉗效孽銥升詐凰喉俄耽橫塌境跌溉拔蔓催指件屋jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計//filename:multithreadtest_2.javaclassmythreadtest_2implementsrunnable{//定義實現(xiàn)了runnable接口的類inti;publicvoidrun(){//重載run()方法,定義線程體for(inti=1;i<=10;i++){system.out.println("mythread_2byrunnableinterfaceisrunning..."+i);}}}publicclassmultithreadtest_2{publicstaticvoidmain(stringargs[]){mythreadtest_2thread=newmythreadtest_2();//創(chuàng)建實現(xiàn)了runnable接口的類對象threadthreadobj=newthread(thread);//創(chuàng)建線程類的對象threadobj.start();}}號哄超勒嚎擔(dān)瓜債暮者嘶溯定章宋黃母速僻鋅李珠根心紅亞襖宵粟洽伐譯jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.2.3守護線程守護線程(daemon)是比較特殊的一種低級別線程,一般被用于在后臺為其它線程提供服務(wù)。比如當(dāng)用戶編寫word文檔時,不斷進行拼寫檢查的線程就是個守護線程,它不會影響用戶編輯文件。典型的守護線程例子是jvm中的系統(tǒng)資源自動回收線程,它始終在低級別的狀態(tài)中運行,不需要占用大量的系統(tǒng)資源,多用于實時監(jiān)控和管理系統(tǒng)中的可回收資源。移朝距維攢惱屎覽潞左箭皆賭裔巖馬萬種榴妓駁攣定韌喪榷鋼斌燦褒效荒jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計
可以通過調(diào)用方法isdaemon()來判斷一個線程是否是守護線程,而將一個用戶線程設(shè)置為守護線程的方法是在線程對象創(chuàng)建之前調(diào)用線程對象的setdaemon(booleanon)方法。true為守護線程,false為用戶線程。郁度棄宣茍術(shù)囑麥嘆西炊炙瓤截仰茂痕享囂剎垂馮炎按釜擰癸胚浙戲榷純jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計//filename:simpledaemons.javapublicclasssimpledaemonsextendsthread{publicsimpledaemons(){setdaemon(true);//必須在start()方法之前調(diào)用start();}publicvoidrun(){while(true){try{system.out.println("iamadaemon"+thread.currentthread().getname());//打印一句話sleep(100);//睡眠一段時間}catch(interruptedexceptione){thrownewruntimeexception(e);}}}publicstaticvoidmain(string[]args){for(inti=0;i<5;i++){newsimpledaemons();}}}辯寧俠粕論跪檻鏈赫臭鼠勘洛喳渺得直吞領(lǐng)區(qū)蠱制廚書訪哇鑄彈究膿臨轍jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計
線程組是java一個特有的概念,它可以把一組線程作為單個對象進行統(tǒng)一的處理或維護,可以對其中的所有線程同時進行操作,如設(shè)置其中所有線程的優(yōu)先級,也可以啟動或阻塞其中的所有線程,并且可以通過分組來區(qū)分有不同安全特性的線程,對不同組的線程進行不同的處理,保證線程安全。7.2.4線程組遣牽匈擁胃暇息鈞恢購抽擻惕蝶眠旭姿癸板摔缸汲怔狽賞雛芭祈氓譏明酮jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計每個線程都只能隸屬于一個線程組。線程組在線程創(chuàng)建時指定,也可以不指定線程組以使該線程處于默認的線程組之中。但是,一旦線程加入某線程組,該線程就一直存在于該線程組中直至線程消亡,而不能在中途改變線程所屬的線程組。線程組在java.lang包中的threadgroup類實現(xiàn)。用戶可以通過調(diào)用包含threadgroup類型參數(shù)的thread類的構(gòu)造函數(shù)來指定線程所屬的線程組。若沒有指定,則線程默認地隸屬于系統(tǒng)線程組,它也是系統(tǒng)中的最高層的線程組。流澆弦終喲殘灤氰汪饑豈沿鄖禁儡萍掖微儒蘆撓稠譏君琳鉀傾拋崇磕俘蹈jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計線程組的創(chuàng)建通過類threadgroup的兩個構(gòu)造方法創(chuàng)建:(1)publicthreadgroup(stringname)參數(shù)name用來指定線程組的名稱。這時創(chuàng)建出來的線程組的父線程組是當(dāng)前線程所在的線程組。(2)publicthreadgroup(threadgroupparent,stringname)在線程組構(gòu)造方法中指定所加入的線程組。其中,參數(shù)parent指定父線程組,參數(shù)name指定新創(chuàng)建的線程組的名稱。砷史妥丁鏈盲危候猜鳥見水瞬振澗沼匡對楷跪瀾杜趕笑靡堿錄葬逞普山事jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.3線程狀態(tài)及優(yōu)先級
線程是一個動態(tài)運行的實體,每個線程都存在一個從創(chuàng)建、運行到消亡的過程。在一個線程的生命周期中,它將在新建狀態(tài)、可運行狀態(tài)、阻塞狀態(tài)或死亡狀態(tài)之間進行轉(zhuǎn)換。通過線程的控制和調(diào)度可以改變線程的狀態(tài)。
拖煽崔寵俗敘北喪棘挎疚杖倡瑩燈啟凋怖蔗吃瓣捷扁設(shè)崇韻遺指貧埂巍然jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.3.1
線程的狀態(tài)及轉(zhuǎn)換新建狀態(tài)。利用new運算符創(chuàng)建線程對象之后、調(diào)用start()成員方法之前就是線程的新建狀態(tài)。這時,該線程僅僅是一個空對象,系統(tǒng)沒有為它分配資源??蛇\行狀態(tài)。使用start()方法啟動一個線程之后,線程就變?yōu)榭蛇\行狀態(tài)。處于這個狀態(tài)的線程可能正在執(zhí)行,也可能沒有執(zhí)行,這取決于它是否獲得了使用cpu的時間片及相關(guān)資源。冷彭膀揍膝梅蘿屁賈遞栓默萍股夜筑賜跌坎偵甩費尺梆責(zé)蓬杜欣啡轟燒矣jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計阻塞狀態(tài)。當(dāng)一個正在cpu上運行的線程由于等待某個事件發(fā)生而讓出cpu時,就進入阻塞狀態(tài)。死亡狀態(tài)。死亡狀態(tài)是線程生命周期中的最后一個階段,處于這個狀態(tài)的線程不再具有執(zhí)行的能力。正常運行的線程完成了全部工作或者線程的執(zhí)行被強行終止都可導(dǎo)致線程處于死亡狀態(tài)。胡戍憶饅摧壟轄猿礦卷瞳博醞麥漆躬伸垂羊戈才填仰雨敲墮振勸誘迸關(guān)救jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計線程狀態(tài)轉(zhuǎn)換運行死亡阻塞新建start()stop()suspend()sleep()wait()resume()notify()纜傀憤狙首溫婪骸輕懷奶蛾符凈秧磐盎牢捧薩稗趁垂無跡兄急扎墳械花筍jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.3.2線程的優(yōu)先級
java中每一個線程都有一個優(yōu)先級。默認情況下,線程將繼承父線程的優(yōu)先級。java將線程的優(yōu)先級分為10個等級,分別用110之間的數(shù)字表示。數(shù)字越大表明線程的級別越高。相應(yīng)地,在thread類中定義了表示線程最低、最高和普通優(yōu)先級的成員變量min_priority、max_priority和normal_priority,代表的優(yōu)先級等級分別為1、10和5。當(dāng)一個線程對象被創(chuàng)建時,其默認的線程優(yōu)先級是5。被將需鑼陳否倦鎖楓朱包娥刻基撐滲錐堿暫延騙鳴抓喬澤柏大穴聰吐亂氫jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計java提供了一個線程調(diào)度器來監(jiān)控進入就緒狀態(tài)的所有線程。線程調(diào)度器按照線程的優(yōu)先級決定線程的執(zhí)行順序,并采用"搶占式"策略來調(diào)度線程的執(zhí)行。為了獲得某個線程的優(yōu)先級,用戶可以調(diào)用thread類的getpriority()成員方法實現(xiàn),而調(diào)用thread類的setpriority(intnewpriority)成員方法可以改變某個線程的優(yōu)先級。禿迎埋霸疑劊枚依郁鋇莖歇糠倘暈玻烹搞端咋彝銻甥求汕侖寐結(jié)陵投地善jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.4線程控制由于資源的有限性以及線程之間運行步調(diào)的一致性,多個線程在并發(fā)執(zhí)行時,一方面可能會競爭使用同一類資源,另一方面也可能需要保持一定的先后執(zhí)行順序。因此,編寫多線程程序時,必須要考慮如何對線程進行有效控制,使它們能夠合理地使用資源,并保持正確的執(zhí)行順序。
社貌滿畦削段靜癌走槍造施屠競寺噸嘔黨證鄧伺擯希暫曾棧坐蓄撐蓮墻呈jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計方法名功能說明voidstart()啟動一個線程voidstop()終止一個線程,已經(jīng)過時,建議不要使用voidsuspend()掛起一個線程voidresume()使掛起的線程恢復(fù)執(zhí)行voidsleep(longmilis)voidsleep(longnillis,intnanos)使線程休眠voidyield()掛起當(dāng)前線程,把cpu讓給其他線程voidjoin(longmillis,intnanos)voidjoin()throwsinterruedexception掛起當(dāng)前線程,直到線程停止voidinterrupt()中斷線程的執(zhí)行booleanisalive()判斷線程是否處于可運行狀態(tài)thread類中線程控制方法敬解隘渡貯爵疆律紳閑巴挪亂號題展鋅既弱彝工梢茲窘冀腔襲眶睡瓜雨透jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計
7.4.2基本的線程控制方法1.線程的創(chuàng)建與啟動在程序中用new運算符創(chuàng)建一個線程時,還需要調(diào)用線程的start()成員方法,才能使線程從新建狀態(tài)轉(zhuǎn)換為可運行狀態(tài)。如果線程獲得了其運行所需的全部資源后就可以執(zhí)行run()方法在cpu上運行。2.線程的終止調(diào)用線程的stop()成員方法可以終止當(dāng)前線程的執(zhí)行,使線程進入死亡狀態(tài)。從jdk1.2開始,stop()方法已被廢棄。鎊貪醇竄鱉套痘顆矛捌莽辯造毋倆息伐痊資申苫攏誓郴瘍妮狀喧欲壕徘幅jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計3.線程的掛起和恢復(fù)
(1)sleep()方法voidsleep(longmillis);voidsleep(longmillis,longnanos);
(2)suspend()方法和resume()方法豹病薛墟拙蝴選發(fā)爾稱摧鑼漲屯拭鞘寄憫玖賂釀繼尤編侄鑒炭燈膳呈祭弛jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計
4.線程的阻塞和喚醒
wait()方法使當(dāng)前線程阻塞,等待某一事件的發(fā)生voidwait(longtimeout)throwsinterruptedexception;voidwait(longtimeout,intnanos)throwsinterruptedexception;notify()方法用來喚醒一個處于阻塞狀態(tài)的線程,任何一個已經(jīng)滿足了被喚醒條件的線程都可能被喚醒。而notifyall()方法則用于喚醒所有處理阻塞狀態(tài)的線程。voidnotify();voidnotifyall();晤侍募身念庸健行睛納陛妄供糊骸瞻吾苔嗚哆切荔餾槽侵掣休偏赤谷邊判jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計5.線程的讓步y(tǒng)ield()方法可以使當(dāng)前執(zhí)行的線程讓出cpu給其他線程執(zhí)行,強制線程間合作。6.等待其他線程結(jié)束一個線程a調(diào)用另外一個線程b的join()方法可以使線程a暫停運行,直至線程b終止。voidjoin()throwsinterruptedexceptionvoidjoin(longtimeout)throwsinterruptedexceptionvoidjoin(longmilliseconds,intnanoseconds)throwsinterruptedexception誠迭冪爽閃周印瀕耗蘑汰唁熟忘緣董高臨鈕凈度奉漣魯磕涼憋喧是尖糟蓋jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.5線程的同步與互斥在大多數(shù)基于多線程實現(xiàn)的系統(tǒng)中,經(jīng)常會出現(xiàn)兩個或者兩個以上的線程同時使用同一類有限資源的情況,如共享某變量或者某外部設(shè)備等。以文件的訪問為例。當(dāng)一個線程向文件中寫數(shù)據(jù),而同時另外一個線程從同一個文件中讀取數(shù)據(jù),如果寫數(shù)據(jù)的線程沒有等到讀取數(shù)據(jù)的線程讀取完畢就繼續(xù)寫數(shù)據(jù),就會出錯。奉煉粕蕉岸壹鍘幌居怯熙襯鹽窄瓦舅鴿哨投鰓鋇鬼盅斑淀僥催珊庭咯牡妹jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.5.1臨界區(qū)和互斥在一個時刻只能夠被一個線程訪問的資源稱為臨界資源,而訪問臨界資源的那段代碼則被稱為臨界區(qū)。臨界區(qū)必須互斥地使用,即一個線程執(zhí)行臨界區(qū)中的代碼時,其他線程不允許再進入臨界區(qū),直至該線程退出為止。渝棉葷烷羽矣柜坡陛褲蔗漿促蜘劇慎囑走科金丫軍希傭打灸吼譴磕賠限喇jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計7.5.2java的互斥鎖機制
java語言引入了對象“互斥鎖”的機制,以保證共享數(shù)據(jù)操作的完整性。每個java對象都對應(yīng)于一個”互斥鎖”標記,這個標記用來保證在任一時刻,只能有一個線程訪問該對象。一旦某個線程獲得了該鎖,別的線程如果希望獲得該鎖,只能等到這個線程釋放鎖之后。給薔蔭州莢于寄僵玩治抗色疥肌臆脖擁悟掄竟渝插蛀印菜證鎖晰惶專劈廂jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計關(guān)鍵字synchronized
java中的關(guān)鍵字synchronized用來與對象的互斥鎖聯(lián)系。當(dāng)某個對象用synchronized修飾時,表明該對象在任一時刻只能由一個線程訪問。此時,如果有第二個線程也要訪問同一個對象,它也試圖獲取該對象的互斥鎖,但因該對象已經(jīng)被鎖定,則它必須等待,直到鎖被釋放為止。承們柜貓部懦罩淡偽衫此開赦奴剛懷長占蝦銳惡勸哆氖袖凹童草磁顯腳倚jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計1.synchronized方法:方法同步
將synchronized關(guān)鍵字放在方法前用于鎖定一個方法,聲明該方法為互斥使用的方法。此時,整個方法體就成為臨界區(qū)。synchronized<方法聲明>{<方法體>}它與下面的聲明效果相同:<方法聲明>{synchronized(this){<方法體>}裸酞忍殺褲禽各得泳漲勝命馬驅(qū)蘋眺置汗龜控須庶漿兔稼范懊笆哥薯愚簽jaa程序設(shè)計第07章多線程程序設(shè)計jaa程序設(shè)計第07章多線程程序設(shè)計2.synchronized塊:對象同步
可以將synchronized放在對象前面限制一段代碼的執(zhí)行,實現(xiàn)對象同步。syn
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)信用管理經(jīng)驗分享會
- 通信線路維護員聘用合同
- 證券交易違規(guī)行為處罰辦法
- 食品飲料行業(yè)設(shè)施管理準則
- 2025版山皮石石材電商平臺合作框架協(xié)議3篇
- 2024年能源行業(yè)擔(dān)保責(zé)任與節(jié)能減排合同3篇
- 藥房環(huán)境保護措施
- 2024年裝飾公司員工離職與補償合同范本3篇
- 2025年度住宅小區(qū)窗簾清洗與保養(yǎng)服務(wù)合同3篇
- 網(wǎng)絡(luò)直播反三違內(nèi)容監(jiān)管
- 小學(xué)信息科技《數(shù)據(jù)與編碼-探索生活中的“編碼”》教學(xué)設(shè)計
- 工程款代扣代付款協(xié)議書(2篇)
- 2024年湖北省高考化學(xué)試卷真題(含答案解析)
- 物業(yè)充電樁合作加盟協(xié)議書范文
- 2023春國開會計實務(wù)專題形考任務(wù)4題庫1及答案
- 現(xiàn)有民辦學(xué)校選擇登記為營利性民辦學(xué)校辦理流程
- 機械工安全操作規(guī)程有哪些(11篇)
- 期末測試卷(一)(試題)2023-2024學(xué)年二年級上冊數(shù)學(xué)蘇教版
- 2024中國華電集團限公司校招+社招高頻難、易錯點500題模擬試題附帶答案詳解
- 國家開放大學(xué)電大《會計信息系統(tǒng)》期末終考題庫及標準參考答案
- 【飛科電器公司基于杜邦分析法的財務(wù)分析案例(7700字論文)】
評論
0/150
提交評論