两种实现多继承的方法
-
子类继承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;
}

浙公网安备 33010602011771号