有一大批网站放在一个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;
}
请大家帮我分析分析问题出在哪里,该怎么解决,谢谢!
----------------------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;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货