20175234 2018-2019-2 《Java程序設計》第十周學習總結
阿新 • • 發佈:2019-05-04
情況 進度條 進程 學習內容總結 interrupt item wait 周期 錯題
目錄
- 20175234 2018-2019-2 《Java程序設計》第十周學習總結
- 教材學習內容總結
- 12.1進程與線程
- 12.2 Java中的線程
- 12.3 Thread類與線程的創建
- 12.4 線程的常用方法
- 12.5 線程同步
- 12.6 協調同步的線程
- 12.7 線程聯合
- 12.8 GUI線程
- 12.9 計時器線程
- 12.10守護線程
- 教材學習中的問題和解決過程
- 代碼托管
- 上周考試錯題總結
- 學習進度條
- 參考資料
- 教材學習內容總結
20175234 2018-2019-2 《Java程序設計》第十周學習總結
教材學習內容總結
12.1進程與線程
- 進程:程序的一次動態執行過程中,從代碼加載、執行至執行完畢的一個完整過程。
- 線程:一個進程在執行中,可以產生多個執行線索,每條線索也有產生、存在和消亡的過程。
12.2 Java中的線程
- 多線程:一個應用程序中同時存在幾個執行體,按幾條不同的執行線索共同工作的情況
- 線程的周期:線程使用Thread類及其子類對象來表示線程
(圖片參考JAVA多線程常見的十大問題)
新建:新建時就有了內存空間
運行調用start();方法通知JVM,排隊等候切換線程。如果使用Thread的子類創建的,需要重寫run();方法。
- 中斷:
①JVM將CPU切換給其他線程
②線程在使用CPU資源的時候,使用了sleep(int millsecond)方法,使當前線程進入休眠狀態。一旦執行sleep方法,則立即進入休眠狀態,在等待指定的秒數後,重新進入線程隊列中排隊等待CPU資源
③線程在使用CPU資源的時候,使用了wait()方法,需要其他線程調用notify()方法,使它進入等待CPU資源的狀態,以便從中斷初繼續進行。
④線程在使用CPU資源的時候,執行某個操作進入阻塞狀態。 死亡:執行完了run()方法中全部語句。或被提前強制性終止。
12.3 Thread類與線程的創建
- 使用Thread的子類, 需要重寫父類的run()方法。
- 用Thread類直接創建線程對象。Thread(Runnable target)(該構造方法中的參數是一個Runnable類型的接口。)
- 目標對象與線程的關系
- 目標對象和線程完全解耦。目標對象沒有組合線程對象.目標對象經常需要通過獲得線程的名字(因為無法獲得線程對象的引用)以便確定是哪個線程正在占用CPU資源,即被JVM正在執行的線程。
- 目標對象組合線程(弱耦合)。目標對象可以組合線程.目標對象類組合線程對象時, 目標對象可以通過獲得線程對象的引用。
12.4 線程的常用方法
- start() ; 線程調用該方法將啟動線程,使之從新建狀態進入就緒隊列排隊,一旦輪到它來享用CPU資源時,就可以脫離創建它的線程獨立開始自己的生命周期了。
- run();Thread類的run()方法與Runnable接口中的run()方法的功能和作用相同,都用來定義線程對象被調度之後所執行的操作,都是系統自動調用而用戶程序不得引用的方法。
- sleep(int millsecond);優先級高的線程可以在它的run()方法中調用sleep方法來使自己放棄CPU資源,休眠一段時間。
- isAlive(); 線程處於“新建”狀態時,線程調用isAlive()方法返回false。在線程的run()方法結束之前,即沒有進入死亡狀態之前,線程調用isAlive()方法返回true。
- currentThread();該方法是Thread類中的類方法,可以用類名調用,該方法返回當前正在使用CPU資源的線程。
- interrupt();一個占有CPU資源的線程可以讓休眠的線程調用interrupt()方法“吵醒”自己,即導致休眠的線程發生InterruptedException異常,從而結束休眠,重新排隊等待CPU資源。
12.5 線程同步
當兩個或多個線程同時訪問同一個變量,並且一個線程需要修改這個變量。
在處理線程同步時,要修改數據的方法用關鍵字synchronized來修飾。
12.6 協調同步的線程
- wait()方法可以中斷方法的執行,使本線程等待,暫時讓出CPU的使用權,並允許其它線程使用這個同步方法。
- notifyAll()方法通知所有的由於使用這個同步方法而處於等待的線程結束等待。曾中斷的線程就會從剛才的中斷處繼續執行這個同步方法,並遵循“先中斷先繼續”的原則。
- notify()方法只是通知處於等待中的線程的某一個結束等待。
12.7 線程聯合
一個線程A在占有CPU資源期間,可以讓其它線程調用join()和本線程聯合,如:B.join(); 稱A在運行期間聯合了B。
12.8 GUI線程
12.9 計時器線程
12.10守護線程
教材學習中的問題和解決過程
問題描述:每次運行結果不同,且運行結果不理想
原因:java中的多線程是搶占式,誰搶到了cpu,cpu才會給他分配時間片,所以每次執行結果不一樣
代碼托管
上周考試錯題總結
相關知識點:JDBC 驅動的四種類型 :①JDBC-ODBC Bridge Driver②Native API Driver③JDBC-Net Driver④Native Protocal Driver。
資料來源:百科JDBC驅動程序
學習進度條
代碼行數(新增/累積) | 博客量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一周 | 51/51 | 1/1 | 12/20 | Java的重要起步 |
第二周 | 460/511 | 2/3 | 30/32 | Java的簡單語句學習 |
第三周 | 803/1314 | 2/5 | 25/57 | Java的基礎學習 |
第四周 | 485/1699 | 1/6 | 20/77 | Java的子類與繼承 |
第五周 | 393/2092 | 1/7 | 20/97 | Java的接口與實現 |
第六周 | 156/2321 | 2/9 | 18/115 | 內部類和異常類、輸入輸出流 |
第七周 | 1225/3546 | 2/11 | 20/135 | 常用類及方法 |
第八周 | 487/4032 | 2/13 | 20/155 | 泛型與集合框架 |
第九周 | 843/5105 | 2/15 | 12/167 | JDBC與MySQL數據庫 |
第十周 | 910/6015 | 3/18 | 10/177 | Java多線程機制 |
參考資料
Java學習筆記(第8版)
《Java學習筆記(第8版)》學習指導
JDBC驅動程序
JAVA多線程常見的十大問題
20175234 2018-2019-2 《Java程序設計》第十周學習總結