java Thread

線程分類---------------------------------- java

線程分爲兩種:
1.用戶線程;即通常的線程
2.守護線程;這是一種特殊的線程,它的特性有「陪伴」的意思,當進程中不存在非守護線程,則守護線程自動銷燬,例A線程中啓動了B守護線程,那麼B就會一直"陪伴"着A線程,若是A線程結束了,那麼B線程也會自動的銷燬。就是說啓動守護線程的線程,纔是守護的對象。 api

線程的優先級--------------------------- 安全

優先及高的線程獲得cpu的資源將越多,也就越先執行這個線程 jvm

1.設置線程的優先級使用setPriority.java中線程優化級分爲1-10個等級,jdk用三個常量來定義:
    MIN_PRIORITY = 1
    NORM_PRIORITY = 5
    MAX_PRIORITY = 10 優化

2.線程有繼承性,即A線程啓動了B線程,那麼B線程的優先級與A同樣 this

線程安全問題----------------------------------------- spa

1.從jvm結構上看:在jvm中有個棧,這個棧是專門存在java線程的信息,而每一個線程都有它們各自的領地。棧中主要存放的是方法的棧幀,每當調用一個方法時就產生出一個棧幀,當方法調用結束就將對應的棧幀彈出銷燬。與其銷燬的還有方法中調用的變量,因此說若是方法中都只有私有變量,那就不可能產生線程安全問題。 線程

2.那也說線程安全問題存在於"實例變量"中,若是多個線程共同訪問1個對象,纔有可能出現線程的安全問題。 對象

api--------------------------------------------- 繼承

start 

    啓動一個線程,但若是屢次啓動會拋出IllegalThreadStateException。要注意的是start啓動的順序不表明線程啓動的順序

currentThread
    返回調用該代碼段的線程

isAlive 
    判斷當前的線程是否處於活動狀態(線程已經啓動且還沒有終止)

sleep 
    讓當前「正在執行的線程」休眠,」正在執行線程「指this.currentThread()返回的線程

getId 
    取得線程的惟一標識

interrupt
    在當前線程中打上了一箇中止標識,並不會當即中止線程

stop
    當即中止線程,是很是暴力且不安全。該方法已經被廢棄,由於若是強制讓線程中止則有可能使一些清理性的工做得不到完成。另一個狀況就是對鎖定的對象進行了」解鎖「,致使數據得不到同步的處理,出現數據不一致的問題。

suspend
    暫停線程,可使用resume恢復線程

yield     放棄當前的cpu資源,將它讓給其餘的任務去佔用cpu執行時間,但放棄的時間不肯定,有可能剛放棄又立刻得到cpu的時間片。      

相關文章
相關標籤/搜索