week8多线程

版权声明: https://blog.csdn.net/lyw_321/article/details/79981323

下面的程序可以下载多个网页文件(download方法已写好),请将它改成多线程进行下载,如果可能, 显示计算全部下载完成程序所用的时间(提示:new Date().getTime()可以得到当前时间的毫秒数)。

  1. import java.net.URL;
  2. import java.io.*;
  3.  
  4. class Downloader 
  5. {
  6.     public static void main(String[] args)
  7.         throws Exception
  8.     {
  9.         final URL[] urls = {
  10.             new URL("http://www.pku.edu.cn"),
  11.             new URL("http://www.baidu.com"),
  12.             new URL("http://www.sina.com.cn"),
  13.             new URL("http://www.dstang.com")
  14.         };
  15.         final String[] files = {
  16.             "pku.htm"
  17.             "baidu.htm",
  18.             "sina.htm"
  19.             "study.htm",
  20.         };
  21.  
  22.         for(int idx=0; idx<urls.length; idx++){
  23.             try{
  24.                 System.out.println( urls[idx] );
  25.                 download( urls[idx], files[idx]);
  26.             }catch(Exception ex){
  27.                 ex.printStackTrace();
  28.             }
  29.         }
  30.     }
  31.     static void download( URL url, String file)
  32.         throws IOException
  33.     {
  34.         try(InputStream input = url.openStream();
  35.             OutputStream output = new FileOutputStream(file))
  36.         {
  37.             byte[] data = new byte[1024];
  38.             int length;
  39.             while((length=input.read(data))!=-1){
  40.                 output.write(data,0,length);
  41.             }
  42.         }
  43.     }
  44. }


代码:

package week8;

import java.net.URL;
import java.io.*;
 
public class Downloader extends Thread{
	
	String file;
	URL url;
	
	public Downloader(URL url, String file){
		this.url=url;
		this.file=file;
	}
	

	public void run(){
		java.io.InputStream input = null ;
		java.io.OutputStream output = null ;
		try{
			input =  url.openStream();
	        output = new FileOutputStream(file);
	        byte[] data = new byte[1024];
            int length;
            try {
				while((length=input.read(data))!=-1){
						output.write(data,0,length);
				} 
			}catch (IOException e1) {
				e1.printStackTrace();
			}
	    }catch(IOException e1){
	    	e1.printStackTrace();
	    }

	}


public static void main(String[] args) throws Exception  {
		        
	final URL[] urls = {
            new URL("http://www.pku.edu.cn"),
            new URL("http://www.baidu.com"),
            new URL("http://www.sina.com.cn"),
            new URL("http://www.dstang.com")
        };
        final String[] files = {
            "pku.htm", 
            "baidu.htm",
            "sina.htm", 
            "study.htm",
        };
	
        	Thread t1=new Thread(new Downloader(urls[0],files[0]));
    		t1.start();
    		
    		Thread t2=new Thread(new Downloader(urls[1],files[1]));
    		t2.start();
    		
    		Thread t3=new Thread(new Downloader(urls[2],files[2]));
    		t3.start();
    		
    		Thread t4=new Thread(new Downloader(urls[3],files[3]));
    		t4.start();

	
	}
}
运行之后,在文件对应保存目录增加了4个htm文件


猜你喜欢

转载自blog.csdn.net/lyw_321/article/details/79981323