程序是系統資源分配的基本單位,而執行緒則是cpu排程的基本單位當我們在電腦開啟乙個程式的時候,我們的作業系統就需要為這個程式分配資源(記憶體、io、cpu的計算資源等)這就是建立了乙個執行緒。程序的建立是為了其內部的執行緒執行提供環境執行緒則是裡面乙個個執行執行的程式,如當你進行多人進行qq聊天的時候,每乙個聊天的物件就可以看作是乙個單獨的執行緒。執行緒之間的通訊在內部就可以很簡單的完成如**訊息到另乙個人。而不同的程序是相互隔離的,通訊的話需要通過作業系統。就像把記事本裡的文字複製到qq裡面一樣。
理解程序和執行緒的概念後,說下計算機對於多執行緒的執行方式,我們在計算機上寫的任何程式,操作最後都必然會成為一條條的順序執行的cpu指令。cpu現在一般是個位數一般都是2、4、8這幾種,而乙個電腦上同一時間可不止乙個程式(程序)在執行一般都是上百的數量光作業系統要執行的各類程式就有幾十個。因而為了實現程式的並行。就採用了一種不斷切換執行緒執行的方式,也就是挑選乙個程序執行一段時間(這段時間又稱時間片一般是毫秒級別的),然後掛起此執行緒並儲存程式的此時的狀態(又叫上下文),然後根據作業系統內部的演算法挑選乙個執行緒執行一段時間。就這樣在所有的需要執行的執行緒反覆的切換,從而使得看起來電腦是在同時執行多個的程式。因而當你開啟了多個執行緒來執行同乙個任務的時候,這就增大了cpu選中此類執行緒的概率從而使得任務更快的完成。
最後說下關於start( ),這個方法作用是將此執行緒加入到執行緒池,表示已經準備好等待cpu的呼叫了。所以在此處不能直接呼叫物件的run()方法,因為這樣的話是表示在main這個主線程下的乙個普通方法而已,因而會按順序執行完此run()內**。這就不是多執行緒了而是順序執行。最後寫個簡單的示例**
public
class
test
}class
ticketthread
implements
runnable}}
}
關於java多執行緒
執行緒是程序的最小單元,同一程序中有多個執行緒 執行緒的互動有 互斥與同步 互斥 系統中的多個執行緒必然要共享某種系統資源,如共享cpu,共享i o裝置,所謂間接相互制約即源於這種資源共享,印表機就是最好的例子,執行緒a在使用印表機時,其它執行緒都要等待,這就是互斥 執行緒a和執行緒b互斥訪問某個資...
關於java方法多執行緒訪問自己的理解
方法體應該是隨著類建立的,因此應該在 區 因此執行緒物件訪問這個方法體的時候,每乙個執行緒物件都是乙個cpu 都會紀錄當前執行到那裡,例如兩個執行緒物件執行下列行數 public void runa for int i 0 i 100 i system.out.println i.tostring ...
java多執行緒中volatile的理解
一 使用runnable來實現多執行緒 package com.xiancheng.old public class threadold implements runnable catch interruptedexception e falg true public boolean isfalg ...