20165203《Java程序設計》第八週學習總結

20165203《Java程序設計》第八週學習總結

教材學習內容總結

第12章java

  • 進程與線程
    • 進程的完成過程:代碼加載、執行至執行完畢
    • 線程:一個進程由多個線程組成。
    • 線程的完成過程:自身的產生、存在和消亡
    • 關係:沒有進程就不會有線程
    • 線程是運行在進程中的小線程。
  • 線程
    • 多線程:幾個執行體共同執行程序的過程。
    • 注意:計算機在任何給定的時刻只能執行那些線程中的一個。
    • 創建多線程機制:Java虛擬機快速地把控制從一個線程切換到另外一個線程,這些線程被輪流執行,每一個線程都有機會使用CPU資源。
    • 主線程:JVM加載代碼時,發現main方法以後啓動的線程
    • 線程的狀態:
      新建
      運行:使用start()方法
      中斷
      死亡
  • 線程的建立
    兩種方式:
  1. 使用Thread類子類建立:須要重寫run()方法。
  2. 使用Thread
    構造方法:Thread(Runable target)
    須要建立一個Runnable接口類的事例,並在該接口中重寫run方法。
  • 目標對象與線程的關係:徹底解耦和目標對象組合線程
  • 線程中的經常使用方法:
  1. start():注意使用start()方法後沒必要再讓線程調用start()方法。
  2. run():Thread子類中重寫run()或在Runnable接口中編寫run()
  3. sleep(int millsecond):使進程休眠。
    注意:參數millsecond是以毫秒爲單位的休眠時間
    必須在try-catch語句塊中調用sleep方法
    4.isAlive():線程沒有進入死亡狀態,調用isAlive()方法返回true
    線程進入死亡狀態後,調用isAlive()方法返回false
    5.currentThread():返回正在使用CPU線程的線程。
    6.interrupt():解除線程的休眠狀態。
  • 線程同步: 程序中的若干個線程都須要使用一個方法,而這個方法用synchronized給予了修飾。
  • 線程同步機制:線程A使用synchronized方法時,其餘線程想使用這個synchronized方法必須等待,直到線程A使用完該synchronized方法。
  • 協調同步的線程:
    1.wait():在同步方法中使用,使本線程等待,暫時讓出CPU的使用權。
    2.notifyAll():通知全部因爲使用這個同步方法而處於等待的線程結束等待,曾中斷的線程就會從剛纔的中斷處繼續執行這個同步方法。
    3.notify():通知處於等待中的線程的某一個結束等待。
    ++必須在同步方法中使用這三種方法++git

  • 線程聯合
    join():其餘線程調用該方法,能夠和正在使用CPU資源的線程聯合。數據庫

  • GUI線程
  • 計時器線程:使用Time類
  • 守護線程:使用void setDaemon(boolean on)方法多線程

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

Q1:當學習教材時,前面的知識有所遺忘,不太瞭解JVM的具體含義?學習

A1:通過查閱教材,並上網查找以後,獲得了比較全面的答案。
JVM實際上是Java虛擬機的縮寫,是Java程序實現其++平臺無關性++的關鍵,正是由於的Java的平臺無關性使得Java語言編譯程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就能夠在多種平臺上不加修改地運行。線程

Q2:當學習到如圖所示時,對程序中的currentThread()方法提出了疑問。
A2:其實當我學習到後面,教材中對currentThread()方法作了解釋,在這裏我就說一下我本身打的理解,currentThread()方法是Thread類中的方法,用於返回當前正在使用CPU資源的線程,和getName()一塊兒用。設計

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

Q1:在運行程序Example12_9.java時,運行結果如圖所示,與教材實例中給出的結果不符。
調試

A1:本身仔細閱讀教材,發現教材中給catMaker線程所賦名字有錯誤,如圖所示。
code

代碼託管

上週考試錯題總結

Q1:接口RowSet繼承了接口__,能夠調用RowSet中的方法__來填充其數據區。
①Statement ②ResultSet ③update ④populate
A . ①③
B . ①④
C . ②③
D . ②④對象

A1:正解:C
解析:與ResultSet相比較,
(1)RowSet擴展了ResultSet接口,所以能夠像使用ResultSet同樣使用RowSet。

  (2)RowSet擴展了ResultSet接口,所以功能比ResultSet更多、更豐富。

  (3)默認狀況下,全部 RowSet 對象都是可滾動的和可更新的。而ResultSet是隻能向前滾動和只讀的。

  (4)RowSet能夠是非連接的,而ResultSet是鏈接的。所以利用CacheRowSet接口能夠離線操做數據。

  (5)RowSet接口添加了對 JavaBeans 組件模型的 JDBC API 支持。rowset 可用做可視化Bean開發環境中的 JavaBeans 組件。

  (6)RowSet採用了新的鏈接數據庫的方法。
  update經常使用於更新數據。

其餘(感悟、思考等,可選)

本週的Java學習主要學習了線程,彷彿開啓了新時代的大門,自我感受線程很是有意思,本身正在嘗 試用線程編寫一些有意思的程序。另外,本身經過本週的學習也發現了前面的知識有些遺忘,要抓緊時間查漏補缺了。

學習進度條

~ 代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積) 重要成長
目標 5000行 30篇 400小時
第一週 48/48 1/1 20/20
第二週 390/438 2/3 18/38
第三週 886/1304 1/4 18/56
第四周 1105/2409 1/5 30/86
第五週 1229/3196 1/6 20/106
第六週 1147/4343 2/8 25/131
第七週 1862/3668 1/9 20/151
第八週 955/5298 1/10 20/171
相關文章
相關標籤/搜索