多线程下载图片


下载图片

自定义线程类继承Thread类
重写run()方法,编写线程执行体
创建线程对象,调用start()方法启动线程

继承thread,重写run()

package Thread.Demo02;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;
import java.net.URL;

/**自定义线程类继承Thread类
 * 重写run()方法,编写线程执行体
 *创建线程对象,调用start()方法启动线程
 * @author liu
 */
//联系thread,实现多线程同步下载
public class DownLoadA extends Thread {
    private String url;//网络图片地址
    private String name;//保存的文件名

    public DownLoadA(String url, String name) {
        this.url = url;
        this.name = name;
    }

//下载图片线程的执行体
    @Override
    public void run() {
        webDownLoader wdl = new webDownLoader();
        wdl.webDownLoader(url, name);
        System.out.println("下完了:" + name);
    }


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

创建对象,调用start()

package Thread.Demo02;


/**自定义线程类继承Thread类
 * 重写run()方法,编写线程执行体
 *创建线程对象,调用start()方法启动线程

 * @author liu
 */
public class Demo01 {
    public static void main(String[] args) {
        DownLoadA dl1 = new DownLoadA("https://baikebcs.bdimg.com/adpic/00%E5%A4%A7%E5%92%96/%E8%83%A1%E9%80%82%E6%96%B0%E6%82%AC%E6%B5%AE.png", "花.png");
        DownLoadA dl2 = new DownLoadA("https://baikebcs.bdimg.com/adpic/00%E5%A4%A7%E5%92%96/%E9%B2%81%E8%BF%85%E6%96%B0%E8%BD%AE%E6%92%AD.JPG", "树.jpg");
        DownLoadA dl3 = new DownLoadA("https://baikebcs.bdimg.com/%E7%A7%92%E6%87%82%E7%A1%AC%E6%A0%B8%E6%A0%A1%E5%9B%AD.png", "房.png");
        dl1.start();
        dl2.start();
        dl3.start();
    }
}