黑馬程式設計師 執行緒小結

2021-06-19 00:29:47 字數 1756 閱讀 3728

---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

說到執行緒還得先說下實現方式兩種實現runnable 介面 與 繼承thread類

例項分析:

public class threadtest

}class ticketextends thread

int num = 20;

@override

public void run()}}

}class ticket2 implements runnable}}

}輸出結果分別是

銷售者1賣出第20張

銷售者1賣出第19張

銷售者1賣出第18張

銷售者3賣出第20張

銷售者3賣出第19張

銷售者3賣出第18張

與銷售員2賣出第20張

銷售員2賣出第18張

銷售員2賣出第17張

銷售員2賣出第16張

銷售員2賣出第15張

銷售員2賣出第14張

銷售員2賣出第13張

銷售員2賣出第12張

銷售員2賣出第11張

銷售員2賣出第10張

銷售員2賣出第9張

銷售員2賣出第7張

銷售員2賣出第6張

銷售員2賣出第5張

銷售員2賣出第4張

銷售員2賣出第3張

銷售員2賣出第2張

銷售員2賣出第1張

銷售員1賣出第19張

銷售員3賣出第8張

先初步分析下

// new ticket("銷售者1").start();

// new ticket("銷售者2").start();

// new ticket("銷售者3").start();

這種繼承thread的 結果有60個記錄 好像是建立了3個執行緒例項 並呼叫(因為本身實現了thread所以直接呼叫start())

而runnable ticket2 = new ticket2();

new thread(ticket2,"銷售員1").start();

new thread(ticket2,"銷售員2").start();

new thread(ticket2,"銷售員3").start();

這種實現runnable介面的 結果有20個記錄 建立了乙個執行緒例項 把例項傳給thread讓thread去執行

這樣達到一種 3個thread去執行乙個執行緒

可以把 thread類 看成乙個完成執行緒的乙個工人

如果把執行緒理解成像 乙個工作一樣 thread類是工人 第一種就是3個工作3個工人

(ticket 即是執行緒又是thread 可以看成工人和工作繫結了 因為不能再為這個工作加工人了)

而實現runnable介面的就是 乙個工作3個工人 當然也可以是4個人 5個人

這樣再說區別與聯絡

兩種實現方式的區別和聯絡:

在程式開發中只要是多執行緒肯定永遠以實現runnable介面為主,因為實現runnable介面相比

繼承thread類有如下好處:

->避免點繼承的侷限,乙個類可以繼承多個介面。

->適合於資源的共享

---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------

黑馬程式設計師 多執行緒小結(上)

windows phone 7手機開發 net培訓 期待與您交流!程序與執行緒 乙個程序至少有乙個執行緒。同乙個程序中的多個執行緒之間可以 併發 執行。執行緒是程式的乙個執行流,每個執行緒都有自己的專有暫存器 棧指標 程式計數器等 但 區是共享的,即不同的執行緒可以執行同樣的函式。多執行緒是指程式中...

黑馬程式設計師 多執行緒小結(下)

windows phone 7手機開發 net培訓 期待與您交流!socket相關概念 socket的英文原義是 孔 或 插座 作為程序通訊機制,取後一種意思。通常也稱為 套接字 用於描述ip位址和埠,是乙個通訊鏈的控制代碼。其實就是兩個程序通訊用的 socket非常類似於 插座。以乙個 網為例。的...

黑馬程式設計師 執行緒

多執行緒有兩種實現方法,分別是繼承thread類與實現runnable介面 同步的實現方面有兩種,分別是synchronized,wait與notify wait 使乙個執行緒處於等待狀態,並且釋放所持有的物件的lock。sleep 使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼叫此方法要捕...