1. 程式人生 > >20165322 第八周學習總結

20165322 第八周學習總結

系統 沒有 控制 ted 自動調用 知識 釋放 clas sele

第八周學習總結

課本知識點總結

第十二章 進程與線程

  • 進程:代碼加載、執行、執行完畢(共享操作系統資源)
  • 線程:一個進程由多個線程組成。(共享進程中某些內存單元,例如代碼與數據)
  • 關系:線程是運行在進程中的小線程。
  • 多線程:幾個執行體共同執行程序的過程。
    • 多線程使用輪流執行機制
    • 1個cpu只能同時執行一個線程。
  • 主線程:JVM加載代碼時,發現main方法之後啟動的線程
  • 線程的狀態:
    • 新建:Thread類或其子類的對象被聲明並創建
    • 運行:調用start()方法通知JVM;如果線程是Thread的子類創建的,程序必須在子類中重寫run()方法
    • 中斷:
    • JVM講CPU切換給其他線程
    • 執行sleep(int millsecond)方法,等待millsecond指定時間後,重新排隊等待
    • 執行wait()必須由線程調用notifyll方法,才能重新排隊
    • 進入阻塞狀態
    • 死亡:釋放分配給線程的內存
    • 正常死亡,運行完run()
    • 被提前強制終止
  • 線程的創建
    • 使用Thread類子類創建:需要重寫run()方法。
    • 使用Thread類
    • 構造方法:Thread(Runable target)
    • 需要創建一個Runnable接口類的事例,並在該接口中重寫run方法。
  • 目標對象與線程的關系:完全解耦和目標對象組合線程
  • 線程的常用方法:
    • 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資源。
  • 線程同步 : 若幹個線程都需要使用一個synchronized(同步)修飾的方法
  • 線程同步機制
  • 當一個線程使用synchronized方法時,其他線程若想使用就必須使用wait()方法等待,直到該線程使用完該方法
  • 其他線程在使用同步方法時若不需要等待,則用完方法的同時,執行notifyAll()方法通知所有處於等待狀態的線程結束等待
    必須要在同步方法中使用wait()、notify()、notifyAll()方法
  • 線程聯合
    join():其他線程調用該方法,可以和正在使用CPU資源的線程聯合。
  • GUI線程
  • 計時器線程:使用Time類
  • 守護線程:使用void setDaemon(boolean on)方法

    上周測試錯題總結

  • (1)
    技術分享圖片
    解析:DDL:數據庫模式定義語言,關鍵字:create
    DML:數據操縱語言,關鍵字:Insert、delete、update
    DCL:數據庫控制語言 ,關鍵字:grant、remove
    DQL:數據庫查詢語言,關鍵字:select

  • (2)
    技術分享圖片
    解析:executeUpdate(sql)的返回值是更新的條數(更新的記錄數量)。返回值是一個整數。

    代碼托管

    技術分享圖片

碼雲鏈接:https://gitee.com/BESTI-IS-JAVA-2018/20165322wyj/tree/master/src/chapter12

20165322 第八周學習總結