两种实现多继承的方法

继承Thread类

  • 子类继承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;
  }
   @Override
   //下载图片的线程执行体
   public void run() {
   WebDownloader webdownloader=new WebDownloader();
   webdownloader.downloader(url,name);
       System.out.println("下载了文件名为:"+name);
  }

   public static void main(String[] args) {
       TestThread2 t1 = new TestThread2("https://www.kuangstudy.com/assert/course/c1/02.jpg","02.jpg");
       TestThread2 t2 = new TestThread2("https://www.kuangstudy.com/assert/course/c1/01.jpg","01.jpg");
       TestThread2 t3 = new TestThread2("https://www.kuangstudy.com/assert/course/c1/03.jpg","03.jpg");
       new Thread(t1).start();
       new Thread(t2).start();
       new Thread(t3).start();
       //t1.start();
       //t2.start();
       //t3.start();

  }
}
//下载器
class WebDownloader{
   //下载方法
   public void downloader(String url,String name){
       try {
           FileUtils.copyURLToFile(new URL(url),new File(name));
      } catch (IOException e) {
           e.printStackTrace();
           System.out.println("IO异常,downloander方法出现问题");
      }
  }
}

 

posted @ 2021-11-01 14:42  我自己12138  阅读(155)  评论(0)    收藏  举报