JAVA 多线程上传下载文件
当用户上传压缩文件完毕之后,我们立即创建两个线程,一是复制压缩文件的线程;二是解压压缩文件的线程。我们可以通过线程的构造方法把文件的信息传递给相应的线程,当我们启动两线程的start方法后,我们就不必再关心其复制和解压的操作,而是直接响应用户,这样用户明显感觉操作变快,而复制和解压的操作仍在后台偷偷的进行着。
实现多线程的方法有两个,一是继承Thread,二是实现接口Runnable。二者的区别不多说,继承只能单继承,而接口可以实现多个,故本人更倾向使用后者。
下面把代码模型贴出来,供大家参考参考:
[java]
package com.yjd.test;
import java.io.File;
public class FileOperate {
public static void main(String[] args) {
Long begin = System.currentTimeMillis();
// 上传文件
UploadFile uploadFile = new UploadFile();
File file = uploadFile.uploadFileMethod();
// 给线程传递参数
CoppyFile coppyFile = new CoppyFile(file);
UnZipFile unZipFile = new UnZipFile(file);
// 创建线程
Thread coppyThread = new Thread(coppyFile);
Thread unZipThread = new Thread(unZipFile);
// 启动线程
coppyThread.start();
unZipThread.start();
Long end = System.currentTimeMillis();
// 响应用户请求
System.out.println("恭喜,文件上传成功,耗时:" + (end - begin) + "毫秒");
}
}
class UploadFile {
// 文件上传
public File uploadFileMethod() {
File file = new File("filePath");
System.out.println("文件上传完毕");
return file;
}
}
class CoppyFile implements Runnable {
private File file;
public CoppyFile(File file) {
this.file = file;
}
@Override
public void run() {
coppyFileMethod(file);
}
// 文件复制
public void coppyFileMethod(File file) {
// 睡眠15秒钟
try {
Thread.sleep(15000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("文件复制完毕");
}
}
class UnZipFile implements Runnable {
private File file;
public UnZipFile(File file) {
this.file = file;
}
@Override
public void run() {
unZipFileMethod(file);
}
// 文件解压
public void unZipFileMethod(File file) {
// 睡眠10秒钟
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("文件解压完毕");
}
}
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。