---------------------- 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 使乙個正在執行的執行緒處於睡眠狀態,是乙個靜態方法,呼叫此方法要捕...