1.程序、執行緒、併發、並行是什麼?
1)程序:作業系統中可以執行多個任務(程式),這些執行的任務(程式)被稱為程序。程式的執行產生程序(記憶體空間、程式執行的堆疊),可以這樣說,程序是作為作業系統分配資源的基本單位。
3)併發:執行緒是併發執行的。作業系統將時間化分為若干個片段(時間片),盡可能的均勻分配給每乙個任務,被分配時間片後,任務就有機會被cpu所執行。微觀上看,每個任務都是走走停停的。但隨著cpu高效的執行,巨集觀上看所有任務都在執行。這種都執行的現象稱之為併發,但不是絕對意義上的「同時發生」。
4)並行:乙個時間段,多個任務同時進行,而且多個cpu執行各自的程序。
2.多執行緒的實現
1)繼承thread
通過查閱jdk api文件,thread 類位於j**a.lang中,表示程序中的執行執行緒。實現多執行緒有兩種方式。第一是繼承thread:
1package
cn.a1.a;23
public
class mythread extends
thread
1112
}13 }
1package
cn.a1.a;23
public
class
test1
1314}15
16 }
main執行緒和t1執行緒搶占cpu 執行,輸出也是main執行緒和t1執行緒根據內部搶占cpu 執行輸出,不規則,多執行緒在提高cpu利用率的同時,增加程式的複雜度。
main thread:0這是多執行緒mythreadmain thread:1mythread:0main thread:2mythread:1main thread:3mythread:2mythread:3main thread:4mythread:4
2)實現runnable介面
用於定義執行緒要執行的任務邏輯。我們定乙個類實現runnable介面,這時我們必須重寫run方法,在其中定義我們要執行的邏輯。之後將runnable交給執行緒去執行。從而實現了執行緒與其執行的任務分離開。將任務分別交給不同的執行緒併發處理,可以使用執行緒的過載構造方法:thread(runnable runnable)。解藕:執行緒與執行緒體解藕,即打斷依賴關係。 如果你學到spring了就知道,spring的ioc就是幹這個的。
演示:
1package
cn.a1.a1;23
public
class myrun implements
runnable 12}
13 }
1public
class
test1
1011}12
13 }
輸出不規則的
main0這是myrun
myrun:0main1
main2
myrun:1myrun:2
繼承thread和實現runnable介面實現多執行緒的優缺點
[1] 繼承thread的執行緒類不能再繼承其他類,實現runnable介面的類還可以繼承其他類。
[2] 實現runnable介面的執行緒類,可以讓多個執行緒共享執行緒實現類的資源。
總結:
多執行緒提高了cpu利用率,但程式的複雜度也隨之增加。一旦執行緒開始執行,很難通過其他方式控制線程的軌跡。
多個執行緒搶占cpu導致執行緒的執行軌跡不確定。
多執行緒 Thread類 建立執行緒
package thread 建立執行緒方式一 繼承 thread 類 重寫方法 run 呼叫 start 開啟執行緒 public class onethread extends thread public static void main string args 可以看出,main 方法和 ru...
多執行緒Thread類例項
基於tcp協議的socket通訊,實現多個使用者登入。建立乙個伺服器類server,乙個客戶端類client,乙個繼承於多執行緒類的serverthread,從而實現多個客戶端向單個伺服器的連線。server類 public class server catch ioexception e clie...
多執行緒 Thread類詳解
thread類是j a中實現多執行緒程式設計的基礎類。本節就來介紹下thread類的常用api和常見用法。thread.activecount 這個方法用於返回當前執行緒的執行緒組中活動執行緒的數量,返回的值只是乙個估計值,因為當此方法遍歷內部資料結構時,執行緒數可能會動態更改。thread.che...