有一大批网站放在一个txt文件中,需要判断能否打开,准备用多线程。可程序运行达不到多线程效果,有的一个域名重复判断多次。
请大家帮我分析分析问题出在哪里,该怎么解决,谢谢!
----------------------domain.txt
sina.com
sohu.com
......
--------------------------------------------------------MultiThread.java
public class MultiThread implements Runnable
{
  public static BufferedReader buffer;
  public String str;
  public MultiThread(BufferedReader br)
  {  }
  public   void run()
  {
    try
    {
        while((str=buffer.readLine())!=null)
        {
          CanRead.read(str)
        }
    }
    catch (Exception e)
    {    }
  }
  public static void main(String[] args) throws FileNotFoundException 
  {
    buffer=new BufferedReader(new FileReader("d:/domain.txt"));
    CanRead.init();    {
      Runnable run=new MultiThread(buffer);
      Thread t1=new Thread(run);
      Thread t2=new Thread(run);
      Thread t3=new Thread(run);
      t1.start();
      t2.start();
      t3.start();
    }
  }
}
----------------------------------------------CanRead.java
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.SocketTimeoutException;
import java.io.IOException;public class CanRead
{
  public   static MultiThreadedHttpConnectionManager manager;
  public static void init()
  {
    manager = new  MultiThreadedHttpConnectionManager();
    int connectionTimeOut = 2000;
    int socketTimeOut = 2000;
    manager.getParams().setConnectionTimeout(connectionTimeOut);
    manager.getParams().setSoTimeout(socketTimeOut);
  }
  public static boolean read(String domain)
  {
    String url = "http://www." + domain;
    boolean flag=false;
      HttpClient client = new HttpClient(manager);
      GetMethod get = new GetMethod(url);
      get.setFollowRedirects(true);
      try
      {
        client.executeMethod(get);
        BufferedReader in = new BufferedReader(new InputStreamReader(get.getResponseBodyAsStream(), get.getResponseCharSet()));
        flag=true;
        System.out.println(domain+"\t ok");
      }
      catch(SocketTimeoutException e)
      {
        flag=false;
        System.out.println(domain+"\t timeout Exception");
      }
      catch(IOException e)
      {
        flag=false;
        System.out.println(domain+"\t io Exception");
      }
      finally
      {
        flag=false;
        System.out.println(domain+"\t other Exception");
      }
    return flag;
  }