色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > 芯靈思SinlinxA33開發(fā)板安卓開發(fā)-java語言基礎(chǔ)(10)

          芯靈思SinlinxA33開發(fā)板安卓開發(fā)-java語言基礎(chǔ)(10)

          發(fā)布人:系兄弟來砍我 時間:2018-12-28 來源:工程師 發(fā)布文章

          Java多線程機制

           

          Thread的子類創(chuàng)建的線程:在Java語言中,用Thread類或子類創(chuàng)建線程對象。

          在編寫Thread類的子類時,需要重寫父類的run()方法,其目的是規(guī)定線程的具體操作,否則線程就什么也不做,因為父類的run()方法中沒有任何操作語句。

          使用Runnble接口:使用Thread子類創(chuàng)建線程的優(yōu)點是:可以在子類中增加新的成員變量,使線程具有某種屬性,也可以在子類中新增加方法,使線程具有某種功能。 

          但是,Java不支持多繼承,Thread類的子類不能再擴展其他的類。

          Runnable接口與目標對象:創(chuàng)建線程的另一個途徑就是用Thread類直接創(chuàng)建線程對象。使用Thread創(chuàng)建線程通常使用的構(gòu)造方法是:

          Thread(Runnable target)   

          該構(gòu)造方法中的參數(shù)是一個Runnable類型的接口。

          在創(chuàng)建線程對象時必須向構(gòu)造方法的參數(shù)傳遞一個實現(xiàn)Runnable接口類的實例,該實例對象稱作所創(chuàng)線程的目標對象,當線程調(diào)用start()方法后,一旦輪到它來享用CPU資源,目標對象就會自動調(diào)用接口中的run()方法。

          實現(xiàn)Runnable和繼承Thread區(qū)別:1, 一個類只能繼承一個父類,存在局限;一個類可以實現(xiàn)多個接口

          2, 在實現(xiàn)Runable接口的時候調(diào)用Thread(Runnable target)創(chuàng)建進程時,使用同一個Runnable實例,則建立的多線程的實例變量也是共享的。但是通過繼承Thread類是不能用一個實例建立多個線程,故而實現(xiàn)Runnable接口適合于資源共享。當然,繼承Thread類也能夠共享變量,能共享Thread類的static變量;

          3, Runnable接口和Thread之間的聯(lián)系:

          public class Thread extends Object implements Runnable

          可以看出Thread類也是Runnable接口的子類;

          線程的常用方法:1.start() : 線程調(diào)用該方法將啟動線程,使之從新建狀態(tài)進入就緒隊列排隊,一旦輪到它來享用CPU資源時,就可以脫離創(chuàng)建它的線程獨立開始自己的生命周期了。

          2.run(): Thread類的run()方法與Runnable接口中的run()方法的功能和作用相同,都用來定義線程對象被調(diào)度之后所執(zhí)行的操作,都是系統(tǒng)自動調(diào)用而用戶程序不得引用的方法。 

          3.sleep(int millsecond): 優(yōu)先級高的線程可以在它的run()方法中調(diào)用sleep方法來使自己放棄CPU資源,休眠一段時間。  

          4.isAlive(): 線程處于新建狀態(tài)時,線程調(diào)用isAlive()方法返回false。在線程的run()方法結(jié)束之前,即沒有進入死亡狀態(tài)之前,線程調(diào)用isAlive()方法返回true.

          5.currentThread():該方法是Thread類中的類方法,可以用類名調(diào)用,該方法返回當前正在使用CPU資源的線程。  

          6.interrupt() :一個占有CPU資源的線程可以讓休眠的線程調(diào)用interrupt()方法吵醒自己,即導致休眠的線程發(fā)生InterruptedException異常,從而結(jié)束休眠,重新排隊等待CPU資源。

          線程同步:在處理多線程問題時,我們必須注意這樣一個問題:當兩個或多個線程同時訪問同一個變量,并且一個線程需要修改這個變量。我們應對這樣的問題作出處理。

           所謂線程同步就是若干個線程都需要使用一個synchronized修飾的方法.即程序中的若干個線程都需要使用一個方法,而這個方法用synchronized給予了修飾。    

          多個線程調(diào)用synchronized方法必須遵守同步機制:當一個線程使用這個方法時,其他線程想使用這個方法時就必須等待,直到線程使用完該方法。在使用多線程解決許多實際問題時,可能要把某些修改數(shù)據(jù)的方法用關(guān)鍵字synchronized來修飾。

           


          *博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



          關(guān)鍵詞:

          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉