java 線程若干問題

Java中線程主要直接繼承有Thread類或者繼承Runnnable接口。

一、線程和進程之間的區別,簡單來說線程是進程一部分,一個進程包含一個或者多個線程,線程之間共享內存,進程之間獨立內存。

二:Java線程創建方法:

TreadClass extends Thread{

public void run()

{   //執行線程內容

}

}

或者

TreadClass implements Runnable()

{public  void  run()

{//線程執行內容}

}

三、Java線程同步問題,當多個線程共同調用同一個方法或者類時,會發生意外修改變量,有時這不是我們期望的結果,我們可以給該方法或者類上鎖,一個方法或者類只有唯一的鎖,多個線程執行時獲得該對象鎖的線程獲得執行條件。同步方法syncharonized。

四、Java線程通信問題,Java線程通信可以採用類似生產者,消費者來比喻倆個線程之間的關係,生產者生產物品,消費者消費,生產者生產時,通知消費者此時還在生產沒有物品(消費者wait()),生產結束時通知消費者消費(生產者notify()消費者)。

主要涉及方法final void wait () throws interruptedException;//等待

 final void notify();//通知

final void notifyall;//通知所有

五、Java線程死鎖問題,當一個線程A中的方法a調用另外一個線程B中的方法b,同時線程B的中方法b調用線程A中的方法a時會發生線程阻塞。也就是說倆個線程循環依賴同一個同步對象時會發生死鎖。死鎖一般是cpu時鐘被倆個線程同時捕獲或者更復雜的情況。

六、線程掛起,恢復和停止問題,方法名分別爲suspend(),resunme(),stop()三種方法,對線程掛起,恢復和停止,控制線程的執行。sleep()和suspend的區別在於sleep()阻塞線程一段時間自動恢復,而suspend()必須調用resunme()方法才能恢復線程,yield()方法結束當前線程執行,終止當前線程CPU執行時間,下次執行同樣參與其他線程CPU時間競爭。

七、線程狀態監控問題,採用Thread.getState()方法,方法的返回值有:

BLOCKD線程在等待鎖而掛起;

NEW線程未開始;

RUNNABLE當前線程正在執行;

TERMINATED(terminated)線程完成狀態;

TIMED_WAITING線程掛起執行一段指定的時間,一般調用sleep()方法或者wait()或者join()方法時會出現;

WATING線程等待,一般調用wait()或者join()方法時出現;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章