1)進程是受操做系統管理的基本運行單元,線程是進程中獨立運行的子任務安全
2)Thread.start()方法通知線程規劃器,告知其該線程已經準備完成,能夠調用其run方法,這時就是異步的方法;若是直接調用run,就沒有交給線程規劃器,就是同步方法。另外,執行start的順序並非線程啓動的順序。異步
3)在jvm中i--有三步操做:一、取出i的值;二、作減法;三、賦予i值jvm
4)isAlived方法是檢測線程是否屬於活動狀態this
5)sleep的做用是指定毫秒數內讓當前正在執行的線程休眠,正在執行的線程指的是this.currentThread返回的線程操作系統
6)getID方法是獲取線程的惟一標識線程
7)Thread.stop中止線程,可是並非線程安全的(調用Thread.stop時會拋一個ThreadDeath異常,一般不須要處理該異常,強制stop會釋放鎖(線程處理數據沒處理完,處理到一半就釋放鎖了,線程就退出了,這是數據是不正確的),會對正在處理的同步數據形成破壞,出現不一致結果。)繼承
8)利用Thread.interrupt停止線程是安全的,但interrupt並非當即中止,而是在當前線程中打一箇中止標記進程
9)this.interrupted判斷當前線程是不是中斷狀態,執行後具備將狀態標誌清除的功能,也就是說,連續兩次執行this.interrupted,第二次獲得的結果一定是false;this.isInterrupted判斷當前線程是不是中斷狀態,執行後不具備將狀態標誌清除的功能事件
10)中止線程的方法:資源
A)線程裏是一個for循環,for循環一直判斷線程是否interrupted,若是被外部停止了,break結束for循環,而後繼續走for後面的語句,而後run方法就結束了;
B)線程裏是一個for循環,for循環一直判斷線程是否interrupted,若是被外部停止了,拋出一個異常,catch住,而後就結束run方法了;
C)線程在sleep的時候,外部執行interrupt方法停止線程,會拋InterruptExpection,能夠catch這個異常,而後退出;
D)暴力中止,Thread.stop;
E)使用return中止線程
推薦用拋異常的形式結束線程,這樣能夠保證線程退出這個事件一直傳播出去
11)suspend暫停線程,resume恢復線程。suspend和resume若是使用不當,極容易形成線程永遠暫停,暫停後,線程的同步鎖是沒法被釋放的
12)yield方法是放棄當前的CPU資源,將它讓給其餘任務去佔用CPU執行時間,但放棄時間不肯定,有可能剛剛放棄,立刻就得到了CPU時間片
13)在操做系統中,能夠給線程肯定優先級,優先級較高的線程獲得的CPU資源較多,爲線程設置優先級,有利於線程規劃器肯定下一次選擇哪一個線程來優先執行。setPriorty方法能夠設置線程的優先級,在1-10中間選擇。線程優先級具備繼承特性,例如A線程啓動B線程,B線程與A線程的優先級相同。優先級具備規則性,高優先級的線程老是大部分先執行完,但不表明高優先級的線程所有先執行完;優先級具備隨機性,優先級較高的線程不見得每次都先執行完
14)守護線程是一種特殊的線程,當進程中不存在非守護線程了,守護線程就退出了。典型的線程是垃圾回收線程,當進程中沒有非守護線程(用戶線程)時,就沒有垃圾回收的意義了,垃圾回收線程就自行銷燬了。