声明:本代码仅供学习文娱。
1、采取线程访问
2、使用线程池和阻塞队列
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URLConnection;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
*
* 访问csdn博客,增加访问量,纯属文娱
* 采取多线程,增加访问速度
*/
public class CSDNBlog {
public static void main(String[] args) throws Exception {
for (int i = 0; i < 10; i++) {
RequestBlogRun conn = new RequestBlogRun();
Thread t = new Thread(conn);
t.start();
}
}
/**
* 构造对博客的要求
*
*/
public static class RequestBlogRun implements Runnable {
public static final String BLOG_URL = "http://blog.csdn.net/jinyingone/article/details/44084051";
//要求的阻塞队列
private BlockingQueue<HttpURLConnection> bq = new ArrayBlockingQueue<HttpURLConnection>(5);
//要求的线程池
private ExecutorService service = Executors.newFixedThreadPool(3);
@Override
public void run() {
boolean flag = true;
while (flag) {
try {
URLConnection conn = URI.create(BLOG_URL).toURL().openConnection();
conn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
conn.setConnectTimeout(20000);
HttpURLConnection httpConn = (HttpURLConnection) conn;
bq.put(httpConn);
service.execute(new ConnBlog(bq));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
*
*实际访问blog
*/
public static class ConnBlog implements Runnable {
private static int i = 0;
private BlockingQueue<HttpURLConnection> bq;
public ConnBlog(BlockingQueue<HttpURLConnection> bq) {
this.bq = bq;
}
public void run() {
try {
HttpURLConnection conn = bq.take();
System.out.println("responseCode:"+conn.getResponseCode());
i++;
System.out.println("times:" + i);
if(i > 1000000){
//为了提高效力,没有加锁,次数有出入
System.out.println("program finshed,will exit!");
System.exit(0);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
上一篇 Oracle 自动备份脚本
下一篇 Java代码实现随机生成汉字