20165330 2017-2018-2 《Java程序設計》第8周學習總結

課本知識總結

第十二章 Java多線程機制

  1. Java中的線程
  • 進程:是程序的一次動態執行過程,它對應了從代碼加載、執行至執行完畢的一個完整過程
  • 線程:一個進程在其執行過程當中,能夠產生多個線程,造成多條執行線索,每一個線程都有它自身的產生、存在和消亡的過程
  • 多線程:指一個應用程序中同時存在一個執行體
  • 線程的狀態及生命週期
    • 新建:用Thread類及其子類的對象來表示線程
    • 運行:run()
    • 中斷
    • 死亡:釋放分配給線程對象的內存
  • 每一個Java線程的優先級都在常數1和10之間,若沒有明確設置優先級,每一個線程的優先級都爲常數5。
  1. Thread類與線程的建立
  • 在Java語言中,用Thread類或子類建立線程對象
  • 使用Thread類:Thread(Runnable target)
  • 目標對象與線程的關係
    • 目標對象與線程徹底耦合
    • 目標對象組合線程(弱耦合),即將線程做爲本身的成員
  1. 線程的經常使用方法
  • start():啓動線程
    • 只有處於新建狀態的線程才能夠調用start()方法
    • 線程以後沒必要在調用start()方法,不然會致使IllegalThreadStateException異常
  • run()
    • 用來定義線程對象被調度以後所執行的操做
    • 當run方法執行完畢,線程就變成死亡狀態
  • sleep(int millsecond)
    • 用來是優先級高的線程休眠,使優先級低的線程作工做
    • 必須在try-catch語句中調用sleep語句
    • millsecond是以毫秒爲單位的休眠時間
  • isAlive()
    • 線程處於新建狀態時,調用isAlive()返回false
    • 在run()結束以前,調用isAlive()返回true
    • 在run()結束後,調用isAlive()返回false
  • currentThread():返回正在使用的CPU資源的線程
  • interrupt():結束一些線程的休眠,從新排隊等待CPU資源
  1. 線程同步
  • 若干個線程都須要使用一個synchronized(同步)修飾的方法
  • 同步機制:當一個線程A使用synchronized方法時,其餘線程想使用這個synchronized方法時就必須等待,直到線程A使用完該synchronized方法
  1. 協調同步的線程
  • 使用wait()方法,中斷線程的執行,使本線程等待,暫時讓出CPU的使用權
  • 使用notifyAll()方法通知全部因爲使用一個同步方法而處於等待的線程結束等待
  1. 線程聯合
  • 一個線程A在佔有CPU資源期間,可讓其餘線程調用join()和本線程聯合
B.join()
  • 在聯合後,A線程馬上中斷執行,一直等到B線程執行完畢,再從新排隊等待CPU資源
  • 在B線程結束後,B.join()不會產生任何效果
  1. GUI線程
  • 當Java程序包含圖形用戶界面(GUI)時,Java虛擬機在運行應用程序會自動啓動更多的線程
  • 兩個重要的線程
    • AWT-EventQuecue:負責處理GUI事件
    • AWT-Windows:負責將窗體或組件繪製到桌面
  1. 計時器線程
  • 構造方法:Timer(int a,object b),a的單位爲毫秒,b是計時器的監視器
  • 只震鈴一次:調用setReapeats(boolean b)方法,b取值false
  • 啓動計時器:start()
  • 中止計時器:stop()
  • 重啓計時器:restart()

遇到的問題及解決方法

  1. 在課上測試數據庫時,輸入中文最後輸出來是亂碼。java

    解決辦法:這裏本身在課前沒有作好充分準備,沒有仔細看書上步驟,在新建數據庫時,要選擇中文相應的字符編碼gb2312(GB2312 Simplified Chinese)數據庫

  2. 在運行本章第7個代碼時,發現沒有輸出
    image多線程

    解決辦法:在檢查代碼後,發現本身粗心未在調用方法中輸入變量名測試

  3. 在運行第5個代碼時,程序一直跳時間,沒法跳出,怎樣使一個線程終止運行?編碼

    解決辦法:參考Java中如何正確而優雅的終止運行中的線程,源程序中只調用了start()方法,程序不斷地分配新實體,參看第6個代碼,可調用interrupt()結束一些程序的休眠,中斷正在運行的線程。.net

代碼託管

image

上週錯題總結

  1. image

    解析:答案ACDE線程

  2. image

    解析:答案Crest

  3. image

    解析:executeUpdate的返回值是一個整數,指示受影響的行數(即更新計數)code

相關文章
相關標籤/搜索