多线程
多线程
java.Thread
eg:
线程的实现
将网络图片通过多线程下载到本地
下载类
commons-io
commons-io
2.6
/*下载器*/
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异常");
}
}
}
- 继承Thread类
//不建议使用:OOP继承局限性
//创建线程方式1:继承Thread类,重写run()方法,调用start并开启线程
//线程开启不一定立即执行,由cpu调度执行
public class ThreadTest2 extends Thread{
private String url;//网络图片地址
private String name;//保存的文件名
public ThreadTest2(String url,String name){//全参数构造方法
this.url=url;
this.name=name;
}
//下载图片执行体
@Override
public void run() {
WebDownLoader webDownLoader=new WebDownLoader();
webDownLoader.downloader(url,name);
System.out.println("下载了"+name+"的文件");
}
public static void main(String[] args) {
ThreadTest2 t1=new ThreadTest2("https://pic.leetcode-cn.com/d2e85988beccb271af4b1a8f4767e4bdf4c085aaf5aaef093347d778e4e138d7-20.png","华为.png");
ThreadTest2 t2=new ThreadTest2("https://pic.leetcode-cn.com/9e736bdb7232bf7d9633dfbc7a053b3dc063b1b02dacf17163a58e1473b71d0c-Dji-Drone-Logo-Sticker__91693.1511163135.jpg","大疆.jpg");
ThreadTest2 t3=new ThreadTest2("https://pic.leetcode-cn.com/1608896124-NAAKhT-images.png","字节跳动.png");
t1.start();
t2.start();
t3.start();
}
}
- 实现Runnable接口
//推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用
//创建线程方式2:实现Runnable接口,实重写run()方法,执行线程需要丢入runnable接口实现类,调用start()方法启动线程
public class RunnableTest2 implements Runnable{
private String url;//网络图片地址
private String name;//保存的文件名
public RunnableTest2(String url,String name){
this.url=url;
this.name=name;
}
//下载图片执行体
@Override
public void run() {
WebDownLoader webDownLoader=new WebDownLoader();
webDownLoader.downloader(url,name);
System.out.println("下载了"+name+"的文件");
}
public static void main(String[] args) {
RunnableTest2 t1=new RunnableTest2("https://pic.leetcode-cn.com/d2e85988beccb271af4b1a8f4767e4bdf4c085aaf5aaef093347d778e4e138d7-20.png","华为.png");
RunnableTest2 t2=new RunnableTest2("https://pic.leetcode-cn.com/9e736bdb7232bf7d9633dfbc7a053b3dc063b1b02dacf17163a58e1473b71d0c-Dji-Drone-Logo-Sticker__91693.1511163135.jpg","大疆.jpg");
RunnableTest2 t3=new RunnableTest2("https://pic.leetcode-cn.com/1608896124-NAAKhT-images.png","字节跳动.png");
new Thread(t1).start();
new Thread(t2).start();
new Thread(t3).start();
}
}