大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java學習路線分享多線程概念,收藏起來

Java學習路線分享多線程概念,收藏起來

更新時間:2019-11-08 16:08:34 來源:動力節點 瀏覽2956次



timg.jpg

  1、進程:正在執行中的程序,其實是應用程序在內存中運行的那片空間。


  2、線程:進程中的一個執行單元,負責進程中的程序的運行,一個進程中至少要有一個線程。一個進程中可以有多個線程的,這個應用程序也可以稱之為多線程程序。


  3、程序啟動多線程,有什么應用呢?可以實現多個程序同時執行,專業術語稱為并發。多線程的使用可以合理使用cpu的資源,如果線程過多導致降低性能。


  4、創建線程的方式兩種方式:


  4.1、繼承Thread


  4.1.1、定義一個類繼承Thread


  4.1.2、重寫run方法


  4.1.3、創建子類對象


  4.1.4、啟動start方法


  4.2、實現Runnable


  4.2.1、定義類實現runnable接口


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


  4.2.3、創建Thread類的對象。


  4.2.4、將runnable接口的子類對象作為參數傳入Thread類的構造方法里。


  4.2.5、啟用Thread類的start方法。


  5、線程對象調用run方法和調用start方法區別?調用run方法不開啟線程,近視對象調用方法。調用start方法開啟線程,并讓JVM調用run方法在開啟的線程中執行。


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


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


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


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


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


  10.1多個線程在操作共享的數據。


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


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


  12、靜態同步函數使用的鎖不是this,而是字節碼文件對象類名.class。


  13、單例設計模式13.1惡漢式:


  代碼體現:


  ClassSingle{


  PrivtaestaticfinalSingles=newSingle();


  PrivateSingle(){}


  PublicstaticSinglegetInstance(){


  Returns;}


  }


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


  實現代碼:ClassSingle{


  PrivateSingle(){}


  PrivatestaticSingles=null;


  PublicstaticSinglegetInstance(){


  If(s==null){


  Synchroinzed(Single.class){


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


  }Returns;}


  }


  }


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


  實現代碼:


  //Thread-0


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


  //Thread-1


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


  以上就是動力節點Java培訓機構小編介紹的“Java學習路線分享多線程概念,收藏起來”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日本a免费观看 | 奇米影视奇米色777欧美 | 青青青免费高清视频在线 | 日本精品一区二区三区视频 | 国产精品护士 | 一级毛片看真人在线视频 | 久久精品国产色蜜蜜麻豆 | 欧美亚洲综合一区 | 欧美整片在线观看 | 99热这里只有精品国产在热久久 | 成人精品视频一区二区三区 | 久久欧美精品 | 日韩免费一级片 | 一级毛片免费不卡在线 | 毛片毛片毛片毛片毛片毛片毛片 | 奇米线在人线免费视频 | 手机在线精品视频每日更新 | 天天干天天干天天天天天天爽 | 欧美激情在线免费 | 国产成人精品在视频 | 99热成人精品免费久久 | 亚洲高清在线播放 | 欧美在线激情视频 | 亚洲综合五月天 | 亚洲日韩中文字幕一区 | 亚洲成人精品久久 | 琪琪色播 | 欧美日韩国产中文字幕 | 国产毛片黄片 | 精品国产日韩亚洲一区二区 | 国产成人啪精品 | 亚洲日韩色综合视频 | 国产精品香蕉在线观看不卡 | 亚洲精品一区二区三区中文字幕 | 天天摸天天操免费播放小视频 | 免费网站啪啪大全 | 欧美高清在线精品一区二区不卡 | 久久久久在线视频 | 欧美一级特黄毛片免费 | 久草免费在线 | 亚洲性夜夜综合久久麻豆 |