1. 程式人生 > >Java學習|多執行緒學習筆記

Java學習|多執行緒學習筆記

什麼是執行緒?     可以理解為程序中獨立執行的字任務。   使用多執行緒:     1.繼承Thread類:從原始碼可以看到,Thread累實現了Runnable介面。         如果多次呼叫start()方法,會出現異常Exception in thread “main” java.lang.IllegalThreadStateException     2.實現Runnable介面     在某些JVM中,i--分為如下三步:         A.取得原有i值         B.計算i-1         C.對i進行賦值     多執行緒同時訪問,會出現非執行緒安全問題     println()方法內部是同步的。          currentThread()方法:可以返回程式碼正在被哪個執行緒呼叫。     isAlive()方法:判斷當前執行緒是否處於活動狀態。         活動狀態:已經啟動尚未終止。     sleep()方法:使當前正在執行的執行緒休眠指定毫秒數。         this.currentThread()方法返回的執行緒。     getId()方法:獲得執行緒的唯一標識。   停止執行緒:     Thread.interrupt()方法:停止執行緒時使用。         不能馬上停止,做停止標記,當前執行緒的方法執行完以後停止。     this.interrupted()方法:         測試當前執行緒是否是已中斷狀態,執行完清除狀態標誌為false     this.isInterrupted()方法:          測試當前執行緒是否是已中斷狀態,不清除狀態標誌     this.stop()方法:         暴力停止執行緒,已廢棄,不推薦使用。         會丟擲異常,但不需要捕獲。     使用return配合interrupt()也可以停止執行緒。     注意:         建議使用拋異常的方法來終止執行緒,因為可以在catch程式碼塊中處理異常。       Thread.yieId()方法:         使當前執行緒放棄cpu資源,重新分配。         放棄時間不確定,有可能剛放棄,馬上又獲得。     執行緒的優先順序:         一般來說,優先順序較高的執行緒得到的資源較多。         setPriority():設定執行緒優先順序。         Java中優先順序分為1~10,10個等級,小於1或者大於10都會丟擲異常。         Jdk中有3個預定義的優先順序,1,5,10       優先順序的繼承性:         A執行緒啟動b執行緒,b執行緒的優先順序和a執行緒是一樣的              守護執行緒:         守護執行緒具有陪伴意義,當java中不存在非守護執行緒,那麼守護執行緒也就銷燬了         垃圾回收執行緒就是一個守護執行緒。              synchronized()同步方法:         非執行緒安全問題存在於例項變數中,區域性變數不存在。         方法內部的變數是執行緒私有的。         當多個執行緒訪問多個物件,jvm會建立多個鎖。