201521123096《Java程序設計》第十週學習總結

1. 本週學習總結

1.1 以你喜歡的方式(思惟導圖或其餘)概括總結異常與多線程相關內容。
java

2. 書面做業

本次PTA做業題集異常多線程

1.finally
題目4-2
1.1 截圖你的提交結果(出現學號)
多線程

1.2 4-2中finally中捕獲異常須要注意什麼?
不論有沒有拋出異常,finally都會執行。ide

2.用異常改進ArrayIntegerStack
題目4-3
2.1 截圖你的提交結果(出現學號)
函數

2.2 實驗總結
須要使用throws方法聲明可能拋出的異常。學習

3.自定義異常
題目5-4
4.1 截圖你的提交結果(出現學號)
線程

4.2 自定義異常有哪幾個關鍵點?
(1)自定義異常必定要繼承已有的異常;
(2)在main方法中須要使用try-catch捕獲異常並處理。3d

4.讀取文件並組裝對象
實驗任務書中中的題目3:讀取文件並組裝對象
給出關鍵代碼(需出現你的學號)調試

try{
    String a1 = lineScanner.next();//姓名
    String a2 = lineScanner.next();//身份證號
    String a3 = lineScanner.next();//性別
    String a4 = lineScanner.next();//年齡
    String a5 = lineScanner.next();//地址
    while(lineScanner.hasNext()){//謹防地址只有一段
        a5 += lineScanner.next();
    }
    list.add(new User(a1,a2,a3,Integer.parseInt(a4),a5));
    if(a1.length() == 0){
        throw new Exception("名字爲空");
    }
    if(a2.length()!=18||a2.length()==0){
        throw new Exception("身份證號出錯:"+a2);
    }
    if(!a3.equals("男")&&!a3.equals("女")){
        throw new Exception("性別出錯:"+a3);
    }
    if(a4==null){
        throw new Exception("年齡爲空:"+a4);
    }
    if(a5==null){
        throw new Exception("地址爲空");
    }
     System.out.println("a1:" + a1 + " a2:" + a2 + " a3:" + a3 + " a4:" + a4 + " a5:" + a5);
} catch (NoSuchElementException e) {
    e.printStackTrace();
      continue;
}catch (Exception e){             //字符轉換爲整數異常捕獲
    e.printStackTrace();
    continue;
}

}
Collections.sort(list, new Comparator<User>(){
    @Override
    public int compare(User o1, User o2) {
        return o1.getAge()-o2.getAge();
    }
};

5.學會使用Eclipse進行調試
觀看相關調試視頻
5.1 簡述使用Eclipse進行調試須要幾步?
三步:
(1)設置斷點;
(2)啓動調試;
(3)查看狀態值。code

5.2 調試時F5, F6, F7快鍵鍵各有什麼不一樣?什麼狀況該使用哪一個快捷鍵?
F5快鍵鍵:step into(跳到某個函數內部)
F6快鍵鍵:step over(跳過函數,不進入函數裏面)
F7快鍵鍵:step return(從函數裏跳出)視頻

5.3 除了Eclipse的調試器,你還使用什麼方法調試程序?
使用System.out.println()

6.題集多線程
6.1 程序填空3-一、3-2。(截圖提交結果,出現你的學號)

6.2 函數4-1(Thread)、4-2(Runnable)(截圖提交結果,出現你的學號)

6.3 函數4-3(Runnable與匿名內部類)(截圖提交結果,出現你的學號),並使用Labmda表達式改寫。

Thread t1 = new Thread(
    () -> {
        System.out.println(mainThreadName);
        System.out.println(Thread.currentThread().getName());
        System.out.println(Arrays.toString(Thread.class.getInterfaces()));
    }
);

6.4 實驗總結
3-1:把t1設置爲守護線程;
3-2:要使用t1.join()方法結束t1.start()語句;
4-1:重寫run()方法,經過繼承Thread類,改寫run()方法來建立線程;
4-2:當一個word比較完了以後要將其設置爲null,不然會一直比較下去;
4.3:使用匿名內部類Thread t1 = new Thread(new Runnable() {}),重寫一下run()方法。

7.源代碼閱讀:多線程程序BounceThread
7.1 哪一個類是支持多線程的類,它實現了什麼接口。這個類作了些什麼?
BallRunnabl支持多線程,它實現了Runnable接口。這個類調用了小球移動的函數,當小球移動以後,就會對界面進行重畫。

7.2 Ball.java這個程序只作了兩件事,這兩件事分別是什麼?
(1)getShape():構造小球,而且規定了小球的初始移動位置;
(2)move():獲取小球的位置。

7.3 BallComponent也只作了兩件事,這兩件事分別是什麼?
(1)add(Ball b):添加小球;
(2)paintComponent(Graphics g):畫小球。

7.4 BounceThread中,何時啓動了新線程?
點擊addButton按鈕的時候

7.5 這個程序是如何實現?一個大體的執行流程是什麼?
(1)創建一個圖像界面;
(2)點擊start按鈕,添加小球)(能夠重複點擊start按鈕);
(3)小球調用move方法移動到最終位置;
(4)點擊close關閉程序。
8.購物車系統中的多線程
8.1 購物車系統中可能存在哪些多線程問題?
若是有多個用戶同時購買,就是多線程問題。

3. 碼雲上代碼提交記錄

題目集:異常多線程(3-1, 3-2, 4-1, 4-2, 4-3)
3.1. 碼雲代碼提交記錄
在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖

相關文章
相關標籤/搜索