工具类
package iostudy.thread;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
/**
* 多线程下载图片
* @since JDK 1.8
* @date 2021/6/1
* @author Lucifer
*/
public class WebDownload {
/**
* 下载方法,形参是资源路径和保存路径
* @param url 下载资源的路径
* @param name 保存的本地路径
*/
public void download(String url, String name) {
try {
FileUtils.copyURLToFile(new URL(url), new File(name));
}catch (MalformedURLException e){
e.printStackTrace();
System.out.println("非法url!!!");
}catch (IOException e){
e.printStackTrace();
System.out.println("图片下载失败!!!");
}
}
/*
写好工具类webdownload以后让如线程体当中
*/
}
实现多线程下载图片
package iostudy.thread;
/**
* 继承Thread类,重写run方法
* @since JDK 1.8
* @date 2021/6/1
* @author Lucifer
*/
public class TDownload extends Thread{
/*为了方便使用,添加两个属性*/
private String url; //远程下载图片资源路径
private String name; //存储的本地路径
/*将属性放入构造器当中,方便使用*/
public TDownload(String url, String name){
this.url = url;
this.name = name;
}
借助代理类对象启动线程--->避免单继承的局限性,方便共享资源
package iostudy.thread;
/**
* 创建线程:
* 1、通过实现Runnable接口,重写run方法创建
* 2、创建实现类对象 + 创建Thread类对象 + start方法启动
* @since JDK 1.8
* @date 2021/6/1
* @author Lucifer
*/
public class StartRunnable implements Runnable{
/*重写Run方法*/
//线程入口点