1. 程式人生 > >20165329 《Java程序設計》第八周學習總結

20165329 《Java程序設計》第八周學習總結

通知 組件 tps targe try 虛擬 timer類 同步 就會

20165329 《Java程序設計》第八周學習總結

教材學習內容總結

第十二章學習總結:JAVA多線程機制

  • 線程:線程是比進程更小的執行單位,一個進程在其執行過程中,可以產生多個線程,形成多條執行線索,每條線索,即每個線程也有自身的產生、存在和消亡的過程。

  • 進程:進程是程序的一次動態執行過程,對應了從代碼加載、執行至執行完畢的一個完整過程,這個過程也是進程本身從產生、發展至消亡的過程。

  • 主線程:該線程負責執行main方法。

  • 創建線程:用Thread的子類創建線程對象;直接使用Thread類創建線程對象,構造方法是Thread(Runnable target)。

  • 線程的常用方法:

  • start() 線程調用該方法將啟動線程;

  • run() 用來定義線程對象被調度之後所執行的操作;

  • sleep(int millsecond) 使優先級別高的線程放棄CPU資源,休眠一段時間。必須在try-catch語句塊中調用sleep方法;

  • isAlive() 線程處於“新建”狀態時,線程調用isAlive()方法返回false。在線程的run()方法結束之前,即沒有進入死亡狀態之前,線程調用isAlive()方法返回true。當線程進入死亡狀態後,線程調用方法isAlive(),此時的返回值為false。

  • wait()方法可以中斷方法的執行,使本線程等待,暫時讓出CPU的使用權,並允許其它線程使用這個同步方法

  • notifyAll()方法通知所有的由於使用這個同步方法而處於等待的線程結束等待。曾中斷的線程就會從剛才的中斷處繼續執行這個同步方法,並遵循“先中斷先繼續”的原則

  • notify()方法只是通知處於等待中的線程的某一個結束等待
    線程聯合:一個線程A在占有CPU資源期間,可以讓其它線程調用join()和本線程聯合AWT-EventQuecue線程負責處理GUI事件,AWT-Windows線程負責將窗體或組件繪制到桌面

  • B.join()
    若準備聯合的B線程已經執行結束,則B.join()不會產生任何效果
    使用Timer類的方法start()啟動計時器,即啟動線程。使用Timer類的方法stop()停止計時器,即掛起線程,使用restart()重新啟動計時器,即恢復線程
    守護線程:一個線程調用void setDaemon(boolean on)方法可以將自己設置成一個守護(Daemon)線程

  • thread.setDaemon(true);
    當程序中的所有用戶線程都已結束運行時,即使守護線程的run方法中還有需要執行的語句,守護線程也立刻結束運行

  • GUI線程:當JAVA程序包含圖形用戶界面(GUI)時,JAVA虛擬機在運行應用程序時會自動啟動更多線程,其中AWT-EventQuecue線程負責處理GUI事件,AWT-Windows線程負責將窗體或組件繪制到桌面。

[代碼托管]

(statistics.sh腳本的運行結果截圖)
技術分享圖片

20165329 《Java程序設計》第八周學習總結