JAVA學習開發之多執行緒問題

2021-07-11 19:58:31 字數 1679 閱讀 2992

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...