1.程序:每乙個程式都是乙個程序,程序包含乙個程式所需要的所有資源
2.執行緒:用來執行**的工具
3.主線程:乙個程序最少要包含的執行緒---main
程式會自動呼叫主線程的**
4.子執行緒:通過主線程開啟的執行緒
//執行緒的表現出形式
//1.繼承thread類,並重寫run()方法,類似於主線程的main方法
//2.實現runnable介面
執行緒的生命週期:
阻塞
/ \
/ \
1新建-->2就緒-->3執行-->4死亡 阻塞狀態在2和3之間形成三足鼎立之勢
執行緒無序呼叫的原因
cpu同時只能工作乙個執行緒物件,其它執行緒會搶占資源,搶不到的執行緒會
同步的方式有兩種
//1.同步的**塊 synchronized(被同步的物件){}
//2.同步的方法 public synchronized void add();
執行緒的同步
同步:同一時間只有乙個物件可以被暫存器操作
非同步:同一時間可以有多個物件可以被暫存器操作
兩種方式所建立執行緒的對比
1.採用實現runnable介面方式的多執行緒
----執行緒類只是實現了runnable介面,還可以繼承其他類
-----可以多個執行緒共享乙個target物件,所以非常適合多個相同執行緒來處理同乙份資源的情況,從而可以將cpu ** 和資料分開,形成清晰的模型
建立執行緒的兩種方式
方式1,繼承thread
1.1定義乙個類繼承thread
1.2重寫run()方法
1.3建立子類物件,就是建立執行緒物件
1.4呼叫start方法,開啟執行緒並讓執行緒執行,同時還會告訴jvm去呼叫run方法
:執行緒物件呼叫run()方法和呼叫start方法的區別?
呼叫run()方法不開啟執行緒,僅是物件呼叫方法
呼叫start()開啟執行緒 並讓jvm呼叫run方法在開啟的執行緒中執行
例子:public class demo2_thread
}
}
class mythread extends thread
}
}
方式2:實現runnable介面
1.1定義類實現runnable介面--->避免了單繼承的侷限性,將執行緒任務單獨分離開來封裝成物件,型別就是runnable介面,對執行緒物件和執行緒任務進行解耦
1.2實現run方法--->將執行緒任務**定義到run方法中
1.3把新執行緒要做的事情寫在run方法中
1.4建立自定義的runnable的子類的物件--->作為引數傳給thread類的建構函式
1.5建立thread物件,傳入runnable
1.6呼叫start開啟新執行緒,內部會自動呼叫runnable的run()方法
例子如下:
public class demo3_runnable } }
class myrunnable implements runnable } }
Java之多執行緒
執行緒的狀態 繼承thread類和實現runable介面,新執行緒執行,即是執行run 方法裡的內容 public class testthread extends thread if count 10 0 catch interruptedexception e run方法結束即當前執行緒結束 p...
java之多執行緒
建立乙個執行緒的方法有三種,thread,runnable 實現,實現callable call 作為實體,可以返回try,catch 1.thread t new thread 2.class x implements runable thread t new thread new x 3.cal...
java之多執行緒
首先本文是建立在大家對程序和執行緒有一點了解的基礎上的。如程序執行緒了解不多的話,可以參考 程序 執行緒 多執行緒相關總結 建立執行緒類的子類 class subthread extends thread 執行緒建立方式2 runnable介面建立執行緒 class runnableimpl imp...