多线程访问网页+高并发测试网页
仅供学习,请勿用于非法用途。
线程类如下
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.HttpURLConnection;
- import java.net.MalformedURLException;
- import java.net.URL;
- public class TestThread extends Thread{
- private String httpurl;
- public TestThread(String httpurl){
- this.httpurl = httpurl;
- }
- public void run() {
- HttpURLConnection connection = null;
- InputStream urlStream = null;
- URL url = null;
- try {
- url = new URL(httpurl);
- connection = (HttpURLConnection)url.openConnection();
- connection.connect();
- urlStream = connection.getInputStream();
- Thread.sleep(10L); } catch (InterruptedException e) {
- }
- catch (MalformedURLException e)
- {
- e.printStackTrace();
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
启动类如下
- public class Test {
- public static void main(String[] args) {
- while (true) {
- //仅供学习请勿用于非法用途
- startThead();
- }
- }
- public static int threadCount = 55; //线程数量
- private static boolean isRunGrabThread = true; //抓取线程是否执行完毕
- static int num = 1; //动态参数
- public static void startThead(){
- Thread[] grabThreads= new Thread[threadCount];
- try{
- //开启-数据抓取子线程
- for(int i=0;i<grabThreads.length;i++){
- int numL = num*100;
- System.out.println(numL);
- String url = "http url ?id=" + numL;
- Thread searchThread=new TestThread(url);
- num++;
- grabThreads[i] = searchThread;
- grabThreads[i].setDaemon(true);
- grabThreads[i].start();
- }
- isRunGrabThread = true;
- //监控子线程,全部完成程序退出
- WhileLoop:
- while(true){
- //拨号策略控制
- //reconnectControl();
- //判断子线程是否运行完成
- for(int i=0;i<threadCount;i++){
- if(grabThreads[i].isAlive()){
- Thread.sleep(10);
- continue WhileLoop;
- }
- }
- //所有抓取线程执行完毕
- isRunGrabThread = false;
- //子线程执行完毕则退出
- break;
- }
- }
- catch (Exception e) {
- System.out.println("main主线程--系统异常!");
- }
- }
- }
版权声明:本文为博主http://www.zuiniusn.com 原创文章,未经博主允许不得转载。
时间: 2024-10-12 13:43:05