java 多線程之繼承Thread類實作建立多線程及實作Runnable接口建立多線程
-
- 1.Java 多線程之Thread類
- 2.繼承Thread類實作建立多線程
- 3.通過實作Runnable接口的方式建立多線程
- 4.Thread類常用的方法
1.Java 多線程之Thread類
- Java語言的JVM允許程式運作多個線程,它通過java.lang.Thread類來實作。
-
Thread類的特性
① 每個線程都是通過某個特定Thread對象的run()方法來完成操作的,經常把run()方法的主體稱為線程體
② 通過該Thread對象的start()方法來調用這個線程
-
Thread類構造方法
① Thread():建立新的Thread對象
② Thread(String threadname):建立線程并指定線程執行個體名
③ Thread(Runnable target):指定建立線程的目标對象,它實作了Runnable接口中的run方法
④ Thread(Runnable target, String name):建立新的Thread對象
2.繼承Thread類實作建立多線程
- 建立一個子線程,完成1-100之間的自然數的輸出,同的主線程執行同樣的操作 創
- 步驟
- 定義子類繼承Thread類。
- 子類中重寫Thread類中的run方法。
- 建立Thread子類對象,即建立了線程對象。
- 調用線程對象start方法:啟動線程,調用run方法
//1.繼承Thread
class SubThread extends Thread{
//2.重寫Threa類的run()方法、方法内實作此子線程要完成的工作
public void run() {
for (int i = 1; i <= 100; i++) {
System.out.println(Thread.currentThread().getName()+ ":"+i);
}
}
}
public class TestThread {
public static void main(String[] args) {
//3.建立一個子類的對象
SubThread st = new SubThread();
SubThread st1 = new SubThread();
//4.調用線程的start()方法,啟動此線程:調用相應的run()方法;
//5.一個線程隻能執行依次start();且不能調用run(),如需多次啟動start()則需帶建立類對象
st.start();
for (int i = 1; i <= 100; i++) {
System.out.println(Thread.currentThread().getName()+ ":"+i);
}
}
}
- 運作輸出結果
5. 運作過程為下圖的運作過程,然後子線程和主線程誰搶到資源就列印誰
3.通過實作Runnable接口的方式建立多線程
- 實作一個子線程輸出1-100到偶數。
-
步驟
1)定義子類,實作Runnable接口。
2)子類中重寫Runnable接口中的run方法。
3)通過Thread類含參構造器建立線程對象。
4)将Runnable接口的子類對象作為實際參數傳遞給Thread類的構造方法中。
5)調用Thread類的start方法:開啟線程,調用Runnable子類接口的run方法。
- demo
// 1.建立一個實作了Runnable接口的類
class RunnableClass implements Runnable{
//2.實作接口的抽象方法
@Override
public void run() {
//子線程要執行的代碼
for (int i = 1; i <= 100; i++) {
if(i % 2 == 0) {
System.out.println(Thread.currentThread().getName()+ ":"+i);
}
}
}
}
public class TestThread {
public static void main(String[] args) {
//3.建立一個Runnable接口實作類的對象
RunnableClass r = new RunnableClass();
//4.将此對象作為形參傳遞給Thread類構造器中,建立Thread類的對象,此對象即為一個線程
Thread t = new Thread(r);
//要想啟動一個多線程,必須調用start()方法
//5.調用start()方法,啟動線程并執行run()
t.start();//啟動線程,執行Thread對象生成時構造器形參的run()方法
//再建立一個線程
Thread t2 = new Thread(r);
t2.start();
}
}
4.Thread類常用的方法
- 點選進入多線程之Thread類的常用方法及線程排程優先級等