小豬學(xué)習(xí)
小小白慢慢學(xué)習(xí)中ing 第二十八天
努力努力
本日內(nèi)容(throws關(guān)鍵字、throw關(guān)鍵字菠齿、自定義異常佑吝、多線程)
1、throws關(guān)鍵字
用于一個方法的對外聲明:用于表示該方法不處理異常绳匀,交由調(diào)用處進(jìn)行處理芋忿。
????????public static void test()throws ParseException{
????????}
子類重寫父類的方法時,不能拋出比父類更大的異常疾棵。
父類拋出異常戈钢,子類可以不拋出
父類拋出異常,子類可以拋出和父類一樣的或者是比父類小的異常
父類拋出異常是尔,子類不能拋出比父類更大的異常
父類沒有拋出異常殉了,子類也不能拋出異常。
2拟枚、throw關(guān)鍵字
用于代碼中主動拋出一個異常對象:設(shè)計一個方法的功能的時候薪铜,根據(jù)邏輯分析,可以主動拋出一個異常對象恩溅。
代碼級別上隔箍,主動拋出一個異常對象,提示調(diào)用者:產(chǎn)生問題啦暴匠。鞍恢。
以下是String這個類的源代碼:
public char charAt(int index) {
? ? ? ?if ((index < 0) || (index >= value.length)) {
? ? ? ? ? ?throw new StringIndexOutOfBoundsException(index);
? ? ? }
? ? ? ?return value[index];
? }
????對比Exception和RuntimeException的區(qū)別傻粘。
1每窖、Exception是最大的異常父類。RuntimeException是Exception的子類弦悉。
2窒典、RuntimeException是運行時異常,程序不強(qiáng)制一定處理該類型的異常稽莉。Exception的異常瀑志,包含了受檢異常,程序中必須處理該類型的異常污秆。
????對比throws和throw的區(qū)別劈猪。
1、throws關(guān)鍵字良拼,用于表示一個方法向外聲明战得,該方法不處理異常,交由調(diào)用處處理這個異常庸推。處理異常的一種方式:捕獲常侦,拋出浇冰。
2、throw關(guān)鍵字聋亡,代碼中肘习,主動拋出一個異常對象。因為某個邏輯原因坡倔,主動拋出一個異常對象漂佩,打斷程序的執(zhí)行。主動拋出異常對象罪塔。
3仅仆、自定義異常
了解性內(nèi)容:理論知識能夠懂。
自己定義一個類垢袱,用于表示某種異常墓拜。需要繼承Exception或其子類即可。
問題:不是哪個類的對象请契,都有被創(chuàng)建并拋出就能夠打斷程序的功能咳榜。
自定義異常:
class MyException extends Exception{
????????//提供有參構(gòu)造方法。爽锥。
????????public MyException(String msg){
? ? ? ? ? ? ? ? super(msg);//調(diào)用父類的有參構(gòu)造:提供異常的信息
????????}
????????public MyException(){
????????????????super();//父類的無參構(gòu)造涌韩,沒有提供異常的信息
????????}
}
程序中主動拋出一個異常對象:
/*
* 設(shè)計一個方法,用于檢驗?zāi)挲g氯夷,年齡不合法臣樱,拋出一個異常
*/
public static void checkAge(int age) throws MyException{
????????if(age < 0){
????????// return;
????????throw new MyException("年齡不能為負(fù)數(shù)。腮考。");
????????}
????????System.out.println("年齡輸入正確雇毫,請繼續(xù)。踩蔚。棚放。");
}
return和finally的參考資料:
https://blog.csdn.net/zoujian1993/article/details/45362931
4、多線程
4.1 生活中的多任務(wù)
生活中馅闽,有很多的場景下飘蚯,同時干多件事兒。比如開車:同時時候手和腳福也。做作業(yè)同時聽課局骤。泡健身房跑步,聽音樂暴凑。峦甩。。
舞臺表演:邊唱邊跳搬设。
4.2 windows電腦
windows電腦穴店,打開任務(wù)管理器撕捍,發(fā)現(xiàn)電腦中正在執(zhí)行的程序,有多個泣洞。每個程序叫就叫做一個進(jìn)程忧风。
windows電腦可以同時執(zhí)行多個程序?那是因為CPU太快啦球凰。狮腿。
4.3 并行和并發(fā)
串行:任務(wù)一個接一個做。
并行:同時在做多個任務(wù)呕诉。(硬件的支持)
并發(fā):在多個任務(wù)之間快速的切換缘厢,看起來同時執(zhí)行多個任務(wù)。但是實際上甩挫,某一個事件點贴硫,執(zhí)行1個任務(wù)。
?
宏觀并行伊者,微觀串行英遭。
4.4 進(jìn)程
進(jìn)程:就是正在執(zhí)行的程序。占用系統(tǒng)資源亦渗。
一個程序的執(zhí)行挖诸,內(nèi)存,CPU法精。多律。。
?
注意區(qū)分:電腦上安裝的軟件搂蜓。沒有跑起來狼荞,不能算進(jìn)程。
4.5 線程
何為線程:概念:進(jìn)程中的一個執(zhí)行路徑洛勉。
進(jìn)程:一個正在執(zhí)行的程序粘秆。
Word文檔:--->一個進(jìn)程
首字母大寫--->一個線程
檢查拼寫錯。收毫。--->一個線程
。殷勘。此再。。
4.6 進(jìn)程和線程
1玲销、進(jìn)程:一個正在執(zhí)行的程序:JVM正在執(zhí)行的程序
2输拇、線程:正在執(zhí)行的程序中的一條執(zhí)行路徑
3、多線程:一個進(jìn)程中贤斜,可以同時有多條線程一起執(zhí)行策吠。
如果一個進(jìn)程沒有了逛裤,該進(jìn)程中的線程也就沒有了。
如果線程沒有了猴抹,但是進(jìn)程不一定的带族。
4.7 Java中對于多線程的支持
Java中如何實現(xiàn)多任務(wù)的?多線程
Thread類:JDK提供好的蟀给,Thread類,就是java中關(guān)于多線程的實現(xiàn)。線程的功能都封裝在了該類中潭枣。
?
要使用線程筷厘,來實現(xiàn)程序的并發(fā):一個程序,同時干多件事前普。
比如:唱歌肚邢,同時跳舞
Thread類來實現(xiàn)
????Java代碼,如何創(chuàng)建一條線程拭卿?如何啟動起來道偷?執(zhí)行功能?
兩種創(chuàng)建線程的方式
A:創(chuàng)建線程并啟動:繼承Thread類
????????step1:創(chuàng)建子類记劈,繼承Thread類勺鸦。
????????step2:重寫run(),線程體目木。并發(fā)執(zhí)行的內(nèi)容换途,寫在這個方法中。
????????step3:啟動線程:start()
????????/*
????????class Cat
????????class Person
????????class MyException extends Exception{//異常類
????????}
????????class MyThread extends Thread{//線程類
????????}
????????*/
B:實現(xiàn)Runnable接口刽射,創(chuàng)建線程的方式二
????????step1:創(chuàng)建實現(xiàn)類军拟,實現(xiàn)Runnable接口
????????step2:重寫run(),線程體誓禁。并發(fā)執(zhí)行的內(nèi)容懈息,寫在這個方法中。
????????step3:啟動線程:
????????創(chuàng)建實現(xiàn)類的對象:mt
????????根據(jù)實現(xiàn)類對象mt摹恰,創(chuàng)建Thread類對象t3辫继,t4
????????start()啟動該線程:t3,t4
對比run()和start()
????????run()俗慈,是線程體姑宽。就是要并發(fā)執(zhí)行內(nèi)容。
????????start()闺阱,啟動一個線程炮车?就是該線程準(zhǔn)備就緒了,隨時可以被CPU執(zhí)行。什么時候執(zhí)行瘦穆,CPU自己說了算纪隙。
????????一個線程,只能被start一次扛或。
Thread類的構(gòu)造方法
????????new Thread();//并發(fā)執(zhí)行绵咱,執(zhí)行run()方法。
????????new Thread(Runnable target);//并發(fā)執(zhí)行告喊,執(zhí)行的run是Runnable接口的實現(xiàn)類實現(xiàn)run方法