多线程程序源代码:命令行多线程下载源代码共享



/*
*该采用10线程控制下载速度大大提升
*目前支持http协议下载
*切换到文件所在目录中
*在命令行中输入java Download5 http://...回车即可运行
*/

import java.io.*;
import java.net.*;
public Download5 extends Thread
{
private long start;
private long end;
private String urls,name;
private ID;
public Download5(String urls,String name, ID,long start,long end)
{
this.start=start;
this.end=end;
this.urls=urls;
this.ID=ID;
this.name=name;
}
public void run
{
try
{
.out.prln("线程"+ID+"启动...");
File file= File(name);
URL url= URL(urls);
URLConnection con=url.openConnection;
con.AllowUserInteraction(true);
con.RequestProperty("Range","s="+start+"-"+end);
RandomAccessFile rand= RandomAccessFile(file,"rw");
rand.seek(start);
b= [2048];
BufferedInputStream buffer= BufferedInputStream(con.getInputStream);
n=0;
while((n=buffer.read(b,0,b.length))!=-1)
{
rand.write(b,0,n);
}
.out.prln("线程"+ID+"下载完毕");
buffer.close;
rand.close;
this.errupt;
}
catch(Exception ee)
{
ee.prStackTrace;
}
}
public void (String args)
{
String urls=args[0];
u=urls.lastIndexOf('/');
String name=urls.sub(u+1,urls.length);
try
{
long time=.currentTimeMillis/1000;
URL url= URL(urls);
URLConnection con=url.openConnection;
filelength=con.getContentLength;
num=10;
size=filelength/num;
Download5 t=null;
CountTime count= CountTime(urls,name,time);
count.start;
for( i=0;i<num;i)
{
(i!=num-1)
{
t= Download5(urls,name,i+1,size*i,size*(i+1)-1);
t.start;
}

{
t= Download5(urls,name,i+1,size*i,filelength);
t.start;
}
}
}
catch(Exception ee)
{
ee.prStackTrace;
}
}
}
CountTime extends Thread
{
private String urls,name;
private long time;
public CountTime(String urls,String name,long time)
{
this.urls=urls;
this.name=name;
this.time=time;
}
public void run
{
try
{
URL url= URL(urls);
URLConnection con=url.openConnection;
filelength=con.getContentLength;
File f= File(name);
while(f.length<filelength)
{
long LEN=f.length;
this.sleep(1000);
.out.prln((f.length-LEN)/1024/1.0+"kb/s");
}
.out.prln("文件下载完毕");
.out.prln("下载所用总时间: "+(.currentTimeMillis/1000-time)+"s");
this.errupt;
}
catch(Exception e)
{
e.prStackTrace;
}
}
}

Tags:  命令行多线程 多线程程序源代码

延伸阅读

最新评论

发表评论