免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Java學(xué)習(xí)路線分享多線程概念

  1、進程:正在執(zhí)行中的程序,其實是應(yīng)用程序在內(nèi)存中運行的那片空間。

  2、線程:進程中的一個執(zhí)行單元,負責(zé)進程中的程序的運行,一個進程中至少要有一個線程。一個進程中可以有多個線程的,這個應(yīng)用程序也可以稱之為多線程程序。

  3、程序啟動多線程,有什么應(yīng)用呢?可以實現(xiàn)多個程序同時執(zhí)行,專業(yè)術(shù)語稱為并發(fā)。多線程的使用可以合理使用cpu的資源,如果線程過多導(dǎo)致降低性能。

  4、創(chuàng)建線程的方式兩種方式:

  4.1、繼承Thread

  4.1.1、定義一個類繼承Thread

  4.1.2、重寫run方法

  4.1.3、創(chuàng)建子類對象

  4.1.4、啟動start方法

  4.2、實現(xiàn)Runnable

  4.2.1、定義類實現(xiàn)runnable接口

  4.2.2、覆蓋接口中run方法,將線程任務(wù)代碼定義到run方法里。

  4.2.3、創(chuàng)建Thread類的對象。

  4.2.4、將runnable接口的子類對象作為參數(shù)傳入Thread類的構(gòu)造方法里。

  4.2.5、啟用Thread類的start方法。

  5、線程對象調(diào)用run方法和調(diào)用start方法區(qū)別?調(diào)用run方法不開啟線程,近視對象調(diào)用方法。調(diào)用start方法開啟線程,并讓JVM調(diào)用run方法在開啟的線程中執(zhí)行。

  6、創(chuàng)建線程的目的是什么?是為了建立單獨的執(zhí)行路徑,讓多部分代碼實現(xiàn)同時執(zhí)行。也就是線程創(chuàng)建并執(zhí)行需要給定的代碼(線程任務(wù))

  7、多線程執(zhí)行時,在棧內(nèi)存中,其實每一個執(zhí)行線程都有一片自己所屬的棧內(nèi)存空間。進行方法的壓棧和彈棧。當執(zhí)行線程的任務(wù)結(jié)束了,線程自動在棧內(nèi)存中釋放了。但是當所有的執(zhí)行線程都結(jié)束了,那么進程就結(jié)束了。

  8、ThreadRunnable的區(qū)別Runnable接口避免了單繼承的局限性。實現(xiàn)Runnable接口的方式,更加符合面向?qū)ο?,線程分為兩部分,一部分線程對象,一部分線程任務(wù)。繼承Thread類:線程對象和線程任務(wù)耦合在一起。一旦創(chuàng)建Thread類的子類對象,既是線程對象,又有線程任務(wù)。將線程任務(wù)單獨分離出來封裝成對象,類型就是runnable接口類型。實現(xiàn)Runnable接口對線程對象和線程任務(wù)進行解耦。

  9、線程的運行狀態(tài)被創(chuàng)建:運行:該狀態(tài)是線程具備了CPU執(zhí)行資格的同時也具備了執(zhí)行權(quán),一個時刻只能有一個線程在執(zhí)行。消亡:當run方法結(jié)束,線程就進入了消亡狀態(tài)。凍結(jié):釋放了CPU的執(zhí)行權(quán)和執(zhí)行資格,有兩種方式:sieep(休眠)、wait(等待),同時也有兩種方式解除此狀態(tài),sleep(時間到)notify()要注意的時,當線程從凍結(jié)狀態(tài)結(jié)束后,并沒有立馬運行,只能說它獲取了CPU的執(zhí)行資格,因為隨機性的原因,它也可能轉(zhuǎn)換成臨時阻塞狀態(tài)。臨時阻塞狀態(tài):線程具備CPU的執(zhí)行資格,不具備執(zhí)行權(quán),正等著CPU切換到它運行。

  10、多線程的安全性問題的原因

  10.1多個線程在操作共享的數(shù)據(jù)。

  10.2線程任務(wù)操作共享數(shù)據(jù)的代碼有多條(運算有多個)。解決問題:用同步代碼塊synchronized同步的好處:解決多線程的安全問題。同步的弊端:降低了程序的性能。同步的前提:必須保證多個線程在同步中使用的是同一個鎖。同步的另一種體現(xiàn)形式:同步函數(shù)。同步函數(shù)使用的鎖是this。

  11、多線程安全問題-同步函數(shù)使用的鎖和同步代碼塊的區(qū)別同步函數(shù)使用的鎖是固定的this。同步代碼塊使用的鎖可以是任意對象。

  12、靜態(tài)同步函數(shù)使用的鎖不是this,而是字節(jié)碼文件對象類名.class。

  13、單例設(shè)計模式13.1惡漢式:

  代碼體現(xiàn):

  ClassSingle{

  PrivtaestaticfinalSingles=newSingle();

  PrivateSingle(){}

  PublicstaticSinglegetInstance(){

  Returns;}

  }

  13.2、懶漢式:延遲加載,存在著多線程并發(fā)訪問的安全問題,需要使用同步來解決安全問題,但是同步會降低效率,所以使用雙重if()判斷形式解決效率低的問題。

  實現(xiàn)代碼:ClassSingle{

  PrivateSingle(){}

  PrivatestaticSingles=null;

  PublicstaticSinglegetInstance(){

  If(s==null){

  Synchroinzed(Single.class){

  If(s==null)S=newSingle();

  }Returns;}

  }

  }

  14、死鎖:即同步的弊端,不是線程和進程沒有了,而是不動了。表現(xiàn)形式:同步嵌套的時候,使用的鎖不一樣,容易引發(fā)死鎖。

  實現(xiàn)代碼:

  //Thread-0

  Synchroinzed(obj1){Synchroinzed(obj2){}}

  //Thread-1

  Synchroinzed(obj2){Synchroinzed(obj1){}}

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
第十一講:多線程與多線程
Java多線程程序設(shè)計詳細解析
Java多線程常見面試問題及解答 | java面試題
對java中的線程感想
Java多線程學(xué)習(xí)(吐血超詳細總結(jié))
徐葳【2019版最新】40小時掌握Java語言之05多線程
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服