20165302第八週總結
進程與線程java
線程是比進程更小的執行單位,一個進程在其執行過程當中,能夠產生多個線程,造成多條執行線索,沒有進程就不會有線程,就像沒有操做系統就不會有進程同樣git
main線程操作系統
- 當JVM加載代碼,發現main方法後,就會啓動一個線程,稱爲main線程,負責執行main方法
線程的進程與生命週期線程
- 新建
- 運行
- 中斷:有四種緣由的中斷:JVM將CPU資源從當前線程切換給其餘線程,使本線程讓出CPU的使用權處於中斷狀態。線程使用CPU資源期間,執行了sleep(intmillsecond)方法,使當前線程進入休眠狀。
線程使用CPU資源期間,執行了wait()方法。
線程使用CPU資源期間,執行某個操做進入阻塞狀態。
- 死亡
線程的經常使用方法對象
- 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資源。
線程的同步blog
- 多個線程調用synchronized方法機制:當一個線程使用synchronized方法時,其餘線程想使用這個方法時就必須等待
線程聯合接口
- A在佔有CPU資源期間一旦聯合B,能夠用B.join()讓其餘線程和本線程聯合
協調同步的線程生命週期
- wait() 方法能夠中斷方法的執行,使本線程等待,暫時讓出CPU的使用權,並容許其它線程使用這個同步方法。
- notifyAll() 方法通知全部的因爲使用這個同步方法而處於等待的線程結束等待。曾中斷的線程就會從剛纔的中斷處繼續執行這個同步方法,並遵循「先中斷先繼續」的原則。
- notify() 方法只是通知處於等待中的線程的某一個結束等待。
守護線程隊列
- 線程調用void setDaemon(boolean on)方法能夠將本身設置成一個守護線程
代碼託管進程