第十週-異常與多線程
1. 本週學習總結
1.1 以你喜歡的方式(思惟導圖或其餘)概括總結異常與多線程相關內容。



2. 書面做業:本次PTA做業題集異常、多線程
1. finally:題目4-2
1.1 截圖你的提交結果(出現學號)

1.2 4-2中finally中捕獲異常須要注意什麼?
finally的執行以前必須先通過try語句。而在finally中也須要使用到try-catch,以防出現異常,因此會比較臃腫。
2. 用異常改進ArrayIntegerStack:題目4-3
2.1 截圖你的提交結果(出現學號)

2.2 實驗總結
這個比較簡單啦,主要是自定義異常了,而後throw就行了。
3. 自定義異常:題目5-4
4.1 截圖你的提交結果(出現學號)

4.2 自定義異常有哪幾個關鍵點?
首先是繼承已有的異常類,而後調用父類的方法。其次是通常自定義異常都是爲了能讓人一看到就知道是出了什麼錯誤,因此類名也頗有講究。而後就是在使用的時候要利用throws和throw
5. 學會使用Eclipse進行調試:觀看相關調試視頻
5.1 簡述使用Eclipse進行調試須要幾步?
1. 在出錯的地方設置斷點
2. 啓動調試模式
3. Eclipse有一個專門的debug perspective,專門用於調試
4. 查看狀態值
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表達式改寫。
new Thread(new Runnable(){
public void run() {
System.out.println(mainThreadName);
System.out.println(Thread.currentThread().getName());
System.out.println(Arrays.toString(getClass().getInterfaces()));
}
});
6.4 實驗總結
這幾個函數題其實作起來不難,就是理解題目有難度,包括異常的函數題也是這樣子,題目看不懂,並且沒有測試的數據,因此通不過也不知道少考慮了什麼問題。就比如多線程的函數題4-2,我是沒搞懂爲啥部分正確。
3-1:這個是在線程中加一個flag,當flag的值改變了以後就退出
3-2:這個主要是join()方法的使用。
4-1:這個是經過定義Thread類的子類,覆蓋Thread類的run()方法,而後建立該子類的實例,但通常不用該方法,開銷大。
4-2:這個函數的關鍵是在於flag標識符,以此來終止線程。還有就是實現Runnable接口的一些概念吧。
4-3:匿名內部類與實現Runnable接口的綜合性使用,既練習瞭如今學的知識,也不忘記以前學習的東西。
7. 源代碼閱讀:多線程程序BounceThread
7.1 哪一個類是支持多線程的類,它實現了什麼接口。這個類作了些什麼?
BallRunnable支持了多線程並實現了Runnable接口。這個類是用於Ball移動,第一個Ball移動以後,先睡眠一段時間,再從新開始第二個Ball移動,循環。
7.2 Ball.java這個程序只作了兩件事,這兩件事分別是什麼?
這是Ball的類,是用於設計Ball的大小,形狀,以及他的位置和移動路線。
7.3 BallComponent也只作了兩件事,這兩件事分別是什麼?
將Ball設置成「圖形」,並將其置於容器中。
7.4 BounceThread中,何時啓動了新線程?
當點擊按鈕「start」時,調用addBall()方法,生成一個新的Ball,而後就啓動了新線程開始移動。
7.5 這個程序是如何實現?一個大體的執行流程是什麼?
首先將圖形界面架構出來,將其中的基本組件設置好。其次在點擊按鈕「start」時,新生成必定設置下的Ball(每點擊一次就會新生成一個Ball),而後啓動新線程,根據設計開始他的移動路線,在移動必定的步數後停下來。
8. 購物車系統中的多線程
8.1 購物車系統中可能存在哪些多線程問題?
顧客吧,每一個顧客均可以同時操做購物車,搜索商品等。
3. 碼雲上代碼提交記錄
在碼雲的項目中,依次選擇「統計-Commits歷史-設置時間段」, 而後搜索並截圖
很尷尬的是,不知道爲何個人碼雲提交不了代碼上去,因此沒有截圖了。