20165322 第八周學習總結
阿新 • • 發佈:2018-04-22
系統 沒有 控制 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 第八周學習總結