继承Thread类实现多线程

f2825417199 / 2023-08-25 / 原文

继承Thread类实现多线程

  • Thread类所属的包和实现的接口

image-20230825155848320

  • 继承Thread类实现多线程的具体步骤:先继承Thread类,然后再重写Thread类的run()方法。

  • 以下是一个从网上下载图片的例子:

    1. 先创建一个下载器Picdownloader
    import org.apache.commons.io.FileUtils;
    import java.io.File;
    import java.io.IOException;
    import java.net.URL;
    
    public class Picdowmloader {
        public void dowmLoad(String url,String name){
            try {
                FileUtils.copyURLToFile(new URL(url),new File("name"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    1. 在创建一个线程测试类TestThread

      
      
      1. 运行结果

      2. 可以看到图片并不是按照顺序下载的,说明我们的进程创建成功。

      3. 犯下的错误

        • 刚开始写测试类时,写成了下面的代码,导致了只是实现了下载图片的功能,并没有体现到多线程,说明对多线程还是不是很熟悉。
      
      
      • 在使用org.apache.commons.io.FileUtils中的FileUtils.copyURLToFile方法时,把url当成是String类型的了,要把String类型的地址转化成URL,需要new URL(String)。

实现Runnable接口实现多线程(用到静态代理)

  • Thread类所属的包和实现的接口

image-20230825155848320

  • 实现Runnable接口实现多线程的具体步骤:实现接口,实现run方法,然后在new Thread(testThread1).start()开启线程。

  • 以下是一个从网上下载图片的例子:

    1. 先创建一个下载器Picdownloader
    import org.apache.commons.io.FileUtils;
    import java.io.File;
    import java.io.IOException;
    import java.net.URL;
    
    public class Picdowmloader {
        public void dowmLoad(String url,String name){
            try {
                FileUtils.copyURLToFile(new URL(url),new File("name"));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    1. 在创建一个线程测试类TestThread

      
      
      1. 运行结果

      2. 可以看到图片并不是按照顺序下载的,说明我们的进程创建成功。