20165228 2017-2018-2 《Java程序設計》第8周學習總結
教材學習內容總結
- 進程與線程的關係
- 多線程的運行機制
- 線程的四種狀態:新建、運行、中斷、死亡
- 使用Thread類或子類建立線程對象的特色
- 掌握線程的經常使用方法:
- start():線程調用該方法將啓動線程,使之重新建狀態進入就緒隊列排隊
- 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資源
- 線程同步:若干個線程都須要使用一個synchronized修飾的方法。當兩個或多個線程同時訪問同一個變量,而且一個線程須要修改這個變量。咱們應對這樣的問題做出處理,不然會發生混亂
- 協調同步的經常使用方法:
- wait()方法能夠中斷方法的執行,使本線程等待,暫時讓出CPU的使用權,並容許其它線程使用這個同步方法
- notifyAll()方法通知全部的因爲使用這個同步方法而處於等待的線程結束等待。曾中斷的線程就會從剛纔的中斷處繼續執行這個同步方法,並遵循「先中斷先繼續」的原則
- notify()方法只是通知處於等待中的線程的某一個結束等待
- 線程聯合:一個線程A在佔有CPU資源期間,可讓其它線程調用join()和本線程聯合
- AWT-EventQuecue線程負責處理GUI事件,AWT-Windows線程負責將窗體或組件繪製到桌面
B.join()
若準備聯合的B線程已經執行結束,則B.join()不會產生任何效果java
- 使用Timer類的方法start()啓動計時器,即啓動線程。使用Timer類的方法stop()中止計時器,即掛起線程,使用restart()從新啓動計時器,即恢復線程
- 守護線程:一個線程調用void setDaemon(boolean on)方法能夠將本身設置成一個守護(Daemon)線程
thread.setDaemon(true);
當程序中的全部用戶線程都已結束運行時,即便守護線程的run方法中還有須要執行的語句,守護線程也馬上結束運行git
教材學習中的問題和解決過程
(statistics.sh腳本的運行結果截圖)併發
上週考試錯題總結
- 錯題1:
executeUpdate返回的類型是int,表明的含義是受影響的記錄 A
A . true
B . false
- 要素全面
- 很認真細緻
- 排版簡介美觀
代碼中值得學習的或問題:
- 代碼中文件分類簡潔
- 很認真
其餘(感悟、思考等,可選)
本週學習了多線程的知識,推翻了我以往對「多線程就是多個任務同時進行」的錯誤認識,而且學習到相關的操做線程的方法線程
學習進度條
目標 |
5000行 |
25篇 |
400小時 |
|
第一週 |
235/235 |
1/1 |
15/15 |
|
第二週 |
224/459 |
2/3 |
15/30 |
|
第三週 |
443/902 |
1/4 |
15/73 |
|
第四周 |
577/1479 |
2/6 |
17/90 |
|
第五週 |
1222/2360 |
1/7 |
14/104 |
|
第六週 |
1527/3294 |
1/8 |
14/118 |
|
第七週 |
591/3883 |
1/9 |
14/132 |
|
第八週 |
1705/5158 |
1/10 |
12/144 |
|