2020-04-27

Day-31 異常&多線程

1、異常

1.1、概念:

在程序運行的時候,代碼產生的不正常事件,導致程序無法正常的繼續執行。

理解它:代碼寫的不正常,跑不下去了。。。

1.2、程序的執行流程:

step1:JVM創建主線程,調用main(),程序的入口

step2:按照main中的代碼,從上向下執行。。。

step3:main中的內容全部執行完畢,程序正常結束。。JVM退出

如果在程序的執行過程中,產生異常了,比如除0,null的對象調用方法,父類對象強制轉為子類類型。。。由JVM負責創建一個該類型的異常對象,并拋出,從而打斷程序的執行。

理解:程序不正常,導致執行不下去了,通過異常對象來阻止進一步執行。。

1.3、異常的分類

錯誤:Error,系統級別的問題,程序解決不了。

異常:Exception,

受檢異常:編譯器在編譯程序的時候,檢查出來的異常。程序中必須處理該異常,程序才能正常的執行。

外部因素導致的異常。

FileNotFoundException,文件找不到異常

IOException,IO操作異常

SQLException,SQL操作異常

? ? ParseException,解析異常

。。。

非受檢異常:編譯器編譯程序的時候,不檢查。運行的時候可能產生的異常,程序中不要求一定處理。也叫做運行時異常:RuntimeException

代碼中的邏輯問題導致的異常

ArrayIndexOfBoundsException,數組下標越界異常

StringIndexOutOfBoundsException,字符串下標越界異常

ArithmeticException,算術異常

NullPointerException,空指針異常

ClassCastException,類轉型失敗異常

1.5、異常的處理

圖1:異常處理

JVM-->main()-->test1()-->test2()-->test3()....

編碼習慣上:

? ? try...catch語句:try語句塊中的代碼越少越好。

? ? throws...功能方法:main()不要再throws異常了

1.6、throws關鍵字

用于一個方法的對外聲明:用于表示該方法不處理異常,交由調用處進行處理。例如:SimpleDateFormate類parse(Sting str)方法的解析異常拋出。

public? static? void? test() throws? ParseException{

}

子類重寫父類的方法時,不能拋出比父類更大的異常。

父類拋出異常,子類可以不拋出

父類拋出異常,子類可以拋出和父類一樣的或者是比父類小的異常

父類拋出異常,子類不能拋出比父類更大的異常

父類沒有拋出異常,子類也不能拋出異常

1.7、throw關鍵字

用于代碼中主動拋出一個異常對象:設計一個方法的功能的時候,根據邏輯分析,可以主動拋出一個異常對象。

代碼級別上,主動拋出一個異常對象,提示調用者:產生問題啦。。

以下是String這個類的源代碼:

public char charAt(int index) {

? ? ? ? if ((index < 0) || (index >= value.length)) {

? ? ? ? ? ? throw new StringIndexOutOfBoundsException(index);

? ? ? ? }

? ? ? ? return value[index];

? ? }

【面試題】對比Exception和RuntimeException的區別。

1、Exception是最大的異常父類。RuntimeException是Exception的子類。

2、RuntimeException是運行時異常,程序不強制一定處理該類型的異常。Exception的異常,包含了受檢異常,程序中必須處理該類型的異常。

【面試題】對比throws和throw的區別。

1、throws關鍵字,用于表示一個方法向外聲明,該方法不處理異常,交由調用處處理這個異常。處理異常的一種方式:捕獲,拋出。

2、throw關鍵字,代碼中,主動拋出一個異常對象。因為某個邏輯原因,主動拋出一個異常對象,打斷程序的執行。主動拋出異常對象。

【面試題】Collection和Collections

【面試題】Array和Arrays

1.8、自定義異常

了解性內容:理論知識能夠懂。

自己定義一個類,用于表示某種異常。需要繼承Exception或其子類即可。

問題:不是哪個類的對象,都有被創建并拋出就能夠打斷程序的功能。

自定義異常:

圖2:自定義異常

2、多線程

2.1 并行和并發

串行:任務一個接一個做。

并行:同時在做多個任務。(硬件的支持)

并發:在多個任務之間快速的切換,看起來同時執行多個任務。但是實際上,某一個事件點,執行1個任務。

宏觀并行,微觀串行。

圖3:穿行、并行、并發

2.2、 進程

進程:就是正在執行的程序。占用系統資源。

一個程序的執行,內存,CPU。。。

注意區分:電腦上安裝的軟件。沒有跑起來,不能算進程。

2.3、 線程

何為線程:概念:進程中的一個執行路徑。

進程:一個正在執行的程序。

Word文檔:--->一個進程

首字母大寫--->一個線程

檢查拼寫錯。。--->一個線程

。。。。

2.4、 進程和線程

1、進程:一個正在執行的程序:JVM正在執行的程序

2、線程:正在執行的程序中的一條執行路徑

3、多線程:一個進程中,可以同時有多條線程一起執行。

如果一個進程沒有了,該進程中的線程也就沒有了。

如果線程沒有了,但是進程不一定的。

2.5、線程的創建啟動

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容

  • 一:java概述:1,JDK:Java Development Kit,java的開發和運行環境,java的開發工...
    ZaneInTheSun閱讀 2,680評論 0 11
  • 1.import static是Java 5增加的功能,就是將Import類中的靜態方法,可以作為本類的靜態方法來...
    XLsn0w閱讀 1,257評論 0 2
  • 面向對象主要針對面向過程。 面向過程的基本單元是函數。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,076評論 0 4
  • 一、上節課回顧 異常Exception 1、概念:在程序運行的時候,代碼產生的不正常事件,導致程序無法正常的繼續執...
    機會留給有準備的人閱讀 217評論 0 0
  • 本文出自 Eddy Wiki ,轉載請注明出處:http://eddy.wiki/interview-java.h...
    eddy_wiki閱讀 2,204評論 0 14