利用httpclient和多线程刷访问量代码

本文介绍了使用Java httpclient库和多线程刷访问量的尝试,探讨了线程启动的正确方式,以及遇到的问题和解决方案。第一版代码由于误用run方法导致并未实现多线程效果。在改进版中,通过正确使用start方法启动线程,实现了多线程并行刷访问量,提高了效率。同时,注意到同一IP多次访问可能只计一次的情况,建议结合不同IP和页面进行多线程操作。
摘要由CSDN通过智能技术生成

缘起于玩唱吧,因为唱吧好友少,访问量低,又不想加什么亲友团之类的,主要是太麻烦了,于是我就琢磨唱吧的访问机制,准备用java的httpclient库来进行刷访问量,想到动态IP重复使用就想到了用多线程来进行刷,但发现速度并没有增快,仍然是刷完一个网址刷下一个网址,这里刷的顺序是随机的。 主要让人伤脑筋的是那代理IP,去网上找了1000多个IP,有好多都是响应速度太慢了,以至于我设定了超时机制,超过一段时间的话就抛出异常并且忽略,只是速度太慢了,有待提高速度!!谁有好的改进的建议欢迎大家来分享,求大家指点。


注:下面的是第一次写的刷访问量代码的第一版,后来想想代码有问题,因为在实际测试中发现虽然用了线程,但是没有真正起到多线程的作用,效率没有得到提升,因为问题也算是学习的重要途径,所以我第一版代码就不改了,给大家作为借鉴。在再后面贴上改进版本的多线程刷访问量代码,这个代码经过测试后发现速度明显得到提升!结果真实有效!大笑


下面列出下面第一版代码的缺陷的原因:

主要就是因为一开始我对多线程编程中的start和run的方法的模糊认识导致的,首先来谈谈什么是两者的区别:

(1)start:

用start方法来启动线程,真正实现了多线程的运行,这是无需等待run方法代码执行完毕就可以直接继续执行下面的代码。通过调用Thread类的start方法来启动一个线程,这是此线程就处于就绪状态,并没有运行,一旦得到了cpu的时间片,就开始执行run方法,这里的run成为线程体,它包含了要执行的这个线程的内容,run方法运行结束,此线程就终止。

(2)run:

run方法只是类的一个普通方法而已,如果直接调用run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法执行完毕后才可以继续执行小面的代码,这样就没有达到写线程的目的了。


因此,在第一个版本的代码中我的线程的启动方法是run,所以没有其他线程产生,所以没有达到多线程的目的。



web_look.java

import java.io.*;
import java.util.*;

import org.apache.commons.httpclient.HttpC
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值