Java多執行緒程式設計總結筆記 四建立與啟動

2021-08-26 00:23:08 字數 875 閱讀 2482

在呼叫start()方法之後:發生了一系列複雜的事情,啟動新的執行執行緒(具有新的呼叫棧);該執行緒從新狀態轉移到可執行狀態;當該執行緒獲得機會執行時,其目標run()方法將執行。

一些常見問題

1、執行緒的名字,乙個執行中的執行緒總是有名字的,名字有兩個**,乙個是虛擬機器自己給的名字,乙個是你自己的定的名字。在沒有指定執行緒名字的情況下,虛擬機器總會為執行緒指定名字,並且主線程的名字總是mian,非主線程的名字不確定。

2、執行緒都可以設定名字,也可以獲取執行緒的名字,連主線程也不例外。

3、獲取當前執行緒的物件的方法是:thread.currentthread();

4、在上面的**中,只能保證:每個執行緒都將啟動,每個執行緒都將執行直到完成。一系列執行緒以某種順序啟動並不意味著將按該順序執行。對於任何一組啟動的執行緒來說,排程程式不能保證其執行次序,持續時間也無法保證。

5、當執行緒目標run()方法結束時該執行緒完成。

6、一旦執行緒啟動,它就永遠不能再重新啟動。只有乙個新的執行緒可以被啟動,並且只能一次。乙個可執行的執行緒或死執行緒可以被重新啟動。

7、執行緒的排程是jvm的一部分,在乙個cpu的機器上上,實際上一次只能執行乙個執行緒。一次只有乙個執行緒棧執行。jvm執行緒排程程式決定實際執行哪個處於可執行狀態的執行緒。

眾多可執行執行緒中的某乙個會被選中做為當前執行緒。可執行執行緒被選擇執行的順序是沒有保障的。

8、儘管通常採用佇列形式,但這是沒有保障的。佇列形式是指當乙個執行緒完成「一輪」時,它移到可執行佇列的尾部等待,直到它最終排隊到該佇列的前端為止,它才能被再次選中。事實上,我們把它稱為可執行池而不是乙個可執行佇列,目的是幫助認識執行緒並不都是以某種有保障的順序排列唱呢個乙個佇列的事實。

9、儘管我們沒有無法控制線程排程程式,但可以通過別的方式來影響執行緒排程的方式。

JAVA多執行緒 四

size x large 死鎖 size size medium 1 何為死鎖 size 簡單說來,死鎖就是系統中的執行緒因相互等侍彼此占有的資源而暫停執行,造成系統假死的現象。size medium 2 死鎖是如何發生的 size 假設系統有兩個互斥資源a和b,系統中的兩個執行緒1和2都要獲得a和...

Java多執行緒程式設計四 執行緒間通訊

一 等待和通知機制 1.經過前面的知識學習,我們先來看一下如果才能讓兩個執行緒互相通訊資料呢?編碼兩個執行緒如下 public class notifythread extends thread override public void run catch interruptedexception ...

多執行緒程式設計(四)

多執行緒的服務端 server pragma comment lib,ws2 32.lib include include includeusing namespace std 處理服務 unsigned stdcall do service void p while 1 if ret 0 if r...