20175313 張黎仙《Java程序設計》第十週學習總結

1、教材學習內容總結

第十二章內容java

  • 主要內容git


  • 雜項
    • 線程同步:當一個線程A使用synchronized方法時,其餘線程想用這個synchronized方法時就必須等待,直到線程A使用完該方法。例子:會計和出納。(教材Example12_7.java)
    • 線程聯合join():若是線程A在佔有CPU資源期間一旦聯合B線程,那麼A線程馬上中斷執行,一直等到它聯合的線程B執行完畢,A線程在從新排隊等待。(教材Example12_9.java)
    • 守護線程void setDaemon(boolean on):當程序中的全部用戶線程都已經結束運行時,即便守護線程中的run方法還有須要執行的語句,守護線程也馬上結束執行。(教材Example12_13.java)

2、教材學習中的問題和解決過程

  • 問題1:對教材375頁提出的要求觀察輸出結果,看似最後的答案都是同樣的,雖然只是過程當中的輸出不一樣而已。學習


  • 解決方法:我在想這是否是隻是巧合,剛恰好最後的答案同樣而已。因此我手動執行本身設計的線程,果真輸出不同的結果,證實了會計和出納這類的問題須要用synchronized,不然將會致使不可預料的後果。spa

  • 問題2:對教材中張飛買票這個例子的課後拓展進行驗證。
  • 運行結果截圖:線程


3、代碼調試中的問題和解決過程

  • 對於Example12_1.java進行debug,更好的理解線程的內部運做。debug



  • 問題1:對於輸出「狗喝水」,「貓喝水」,"剩7",「剩5」表示不能理解,甚至還出現「剩1」,「剩2」,難道水喝了還能變多??設計


  • 解決方法:對其線程進行debug,觀察其運行過程。3d

  • 問題2:對於教材上Example12_5.java的運行結果沒有問題,可是我在想若是每次建立完一個新的對象,而後令time=0,結果會不會一直隔三的贈加一條相同的時間。可是運行結果卻跟我預料的不太同樣,結果始終跟沒有加time=0這句是同樣的。
  • 解決方法:對其線程進行debug,觀察其運行過程。調試

  • 我發現裏面是有產生新對象的,可是爲何就是沒有輸出呢?這個問題我仍是很疑惑。(未能解決)

4、代碼託管

(https://gitee.com/xiannvyeye/test/tree/master/Code/chp12)



5、心得體會

  • 本週學習的章節我以爲比較抽象,其中後臺運做的過程咱們看不到,因此對運行結果感到很疑惑,我和小夥伴們花費了大量的時間去理解這個運行結果。
  • 後來我在想,能不能也來個調試什麼的來看看線程內部的運行狀況,結果發現調試以後思路就清晰了許多。最終算是比較清楚了掌握了本章的內容。

6、學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第九周 1255/6303 3/25 21/205
  • 計劃學習時間:23小時

  • 實際學習時間:21小時

  • 改進狀況:
    • 多看書,提升閱讀速度、理解能力。
    • 合理安排時間,充分利用碎片時間。

7、參考資料

相關文章
相關標籤/搜索