[置顶] CSDN博客自动访问
发布时间:2020-12-13 20:05:17 所属栏目:PHP教程 来源:网络整理
导读:声明:本代码仅供学习文娱。 1、采取线程访问 2、使用线程池和阻塞队列 import java.net.HttpURLConnection; import java.net.URI; import java.net.URLConnection; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQ
声明:本代码仅供学习文娱。 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();
}
}
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |