Java多线程学习——图片下载
实现多线程方式1:继承类Thread——重写方法run——调用方法start
从网络下载图片首先要增加包commons-io.jar
- import org.apache.commons.io.FileUtils;
- import java.io.File;
- import java.io.IOException;
- import java.net.URL;
- /**
- * 下载图片
- */
- public class WebDownLoader {
- /**
- * 下载工具
- * @param url
- * @param name
- */
- public void download(String url,String name){
- try {
- FileUtils.copyURLToFile(new URL(url),new File(name));
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- public class TDownloader extends Thread{
- String url;
- String name;
- public TDownloader(String url, String name) {
- this.url = url;
- this.name = name;
- }
- @Override
- public void run() {
- WebDownLoader webDownLoader=new WebDownLoader();
- webDownLoader.download(url,name);
- }
- public static void main(String[] args) {
- TDownloader t1=new TDownloader("http://pic28.nipic.com/20130424/3822951_142421949000_2.jpg","photo1.jpg");
- TDownloader t2=new TDownloader("http://pic1.win4000.com/wallpaper/2018-01-23/5a669e431688c.jpg","photo2.jpg");
- TDownloader t3=new TDownloader("http://pic1.win4000.com/wallpaper/6/57a2ea76bcc06.jpg","photo3.jpg");
- t1.start();
- t2.start();
- t3.start();
- }
- }
实现多线程方式2:实现Runnable——重写run()方法——new Thread( 实现了Runnable接口的对象 ).start
下载工具类和上面一样,实现多线程的类变了
- public class TDownloader implements Runnable{
- String url;
- String name;
- public TDownloader(String url, String name) {
- this.url = url;
- this.name = name;
- }
- @Override
- public void run() {
- WebDownLoader webDownLoader=new WebDownLoader();
- webDownLoader.download(url,name);
- }
- public static void main(String[] args) {
- TDownloader t1=new TDownloader("http://pic28.nipic.com/20130424/3822951_142421949000_2.jpg","photo1.jpg");
- TDownloader t2=new TDownloader("http://pic1.win4000.com/wallpaper/2018-01-23/5a669e431688c.jpg","photo2.jpg");
- TDownloader t3=new TDownloader("http://pic1.win4000.com/wallpaper/6/57a2ea76bcc06.jpg","photo3.jpg");
- new Thread(t1).start();
- new Thread(t2).start();
- new Thread(t3).start();
- }
- }
Java多线程学习——图片下载的更多相关文章
- Java多线程学习笔记
进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...
- Java多线程学习(转载)
Java多线程学习(转载) 时间:2015-03-14 13:53:14 阅读:137413 评论:4 收藏:3 [点我收藏+] 转载 :http://blog ...
- java多线程学习笔记——详细
一.线程类 1.新建状态(New):新创建了一个线程对象. 2.就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法.该状态的线程位于可运行线程池中, ...
- 【转】Java多线程学习
来源:http://www.cnblogs.com/samzeng/p/3546084.html Java多线程学习总结--线程概述及创建线程的方式(1) 在Java开发中,多线程是很常用的,用得好的 ...
- JAVA多线程学习笔记(1)
JAVA多线程学习笔记(1) 由于笔者使用markdown格式书写,后续copy到blog可能存在格式不美观的问题,本文的.mk文件已经上传到个人的github,会进行同步更新.github传送门 一 ...
- Java多线程学习(六)Lock锁的使用
系列文章传送门: Java多线程学习(二)synchronized关键字(1) Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多 ...
- Java多线程学习(五)线程间通信知识点补充
系列文章传送门: Java多线程学习(二)synchronized关键字(1) Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多 ...
- Java多线程学习(四)等待/通知(wait/notify)机制
转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79690279 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...
- Java多线程学习(三)volatile关键字
转载请备注地址:https://blog.csdn.net/qq_34337272/article/details/79680693 系列文章传送门: Java多线程学习(一)Java多线程入门 Ja ...
随机推荐
- php扩展安装,指定新的openssl
1 自己从源码编译一个新的openssl 下载源码下来解压到 /mnt/soft/openssl-1.0.2m (openssl 安装到) ./config -h /usr/bin/perl ./Co ...
- inotify.sh脚本范例
inotify.sh脚本范例 [root@A-Server58 ~]# cat /server/scripts/inotify.sh#!/bin/bash#parahost01=192.1 ...
- hive中groupby和distinct区别以及性能比较
Hive去重统计 先说核心: 都会在map阶段count,但reduce阶段,distinct只有一个, group by 可以有多个进行并行聚合,所以group by会快. 经常在公司还能看到.很多 ...
- LOJ-数列分块入门5
链接: https://loj.ac/problem/6281 题意: 给出一个长为 的数列 ,以及 n个操作,操作涉及区间开方,区间求和. 思路: 考虑开方5次之后就为1, 即考虑一整个区间的开方次 ...
- python中json对象转换出错解决方法
今天在使用python中的json转换碰到一个问题: 接收一个post的json字符串: s={"username":"admin","passwor ...
- shell练习--PAT试题1009:说反话 (20 分)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串.字符串由若干单词和若干空格组成,其中单词是由英文字母(大小 ...
- asp.net 如何实现大文件断点上传功能?
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
- 上传200G文件
最近遇见一个需要上传百G大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...
- 模板_SPLAY
#include<bits/stdc++.h> #define maxn 500005 //#define int long long using namespace std; inlin ...
- K8S简介
简介 Kubernetes是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规 ...