兩種實現多繼承的方法
阿新 • • 發佈:2021-11-01
-
子類繼承Thread類具備多執行緒能力
-
啟動執行緒:子類物件.start()
-
不建議使用:避免oop單繼承侷限性
package com.wang1.demo01;
//建立執行緒方式一:繼承Thread類,重寫run()方法,呼叫start開啟執行緒
//注意:執行緒開啟不一定立即執行,是由CPU排程
public class TestThread1 extends Thread{
public void run(){
//run方法執行緒體
for (int i = 0; i <200 ; i++) {
System.out.println("我在看程式碼--"+i);
}
}
public static void main(String[] args) {
//建立一個執行緒物件
TestThread1 testthread1=new TestThread1();
//呼叫start()方法開啟執行緒
testthread1.start();
//main執行緒,主執行緒
for (int i = 0; i <1000 ; i++) {
System.out.println("我在學習--"+i);
}
}
}
實現Runnable介面
-
實現Runnable具備多執行緒能力
-
啟動執行緒:傳入目標物件+Thread物件.start()
-
推薦使用:避免單繼承侷限性,靈活方便,方便同一物件被多個執行緒使用
package com.wang1.demo01;
//建立執行緒方式2:實現runnable介面,重寫run方法,執行執行緒是要丟入runnable介面實現類,呼叫start()方法.
public class TestThread3 implements Runnable{
public void run(){
//run方法執行緒體
for (int i = 0; i <200 ; i++) {
System.out.println("我在看程式碼--"+i);
}
}
public static void main(String[] args) {
//建立runna介面實現物件
TestThread3 testThread3=new TestThread3();
//建立執行緒物件
/* Thread threat=new Thread(testThread3);
threat.start();*/
new Thread(testThread3).start();
//main執行緒,主執行緒
for (int i = 0; i <1000 ; i++) {
System.out.println("我在學習--"+i);
}
}
}
下載網圖
package com.wang1.demo01;
import com.sun.org.apache.xerces.internal.impl.xpath.XPath;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.URL;
//練習Thread,實現多執行緒同步下載圖片
public class TestThread2 implements Runnable{
//public class TextThreads extends Thread{
private String url;//網路圖片地址
private String name;//儲存的檔名
public TestThread2(String url,String name){
this.name=name;
this.url=url;
}