当前位置: 代码迷 >> J2SE >> 咨询一有关问题:httpclient 多线程怎么监控页面是否改变呢
  详细解决方案

咨询一有关问题:httpclient 多线程怎么监控页面是否改变呢

热度:47   发布时间:2016-04-24 01:57:42.0
咨询一问题:httpclient 多线程如何监控页面是否改变呢?
使用httpclient 如何多线程重复读取某个页面,然后判断页面是否发生改变了呢?
Java code
ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager();        cm.setMaxTotal(100);        cm.setDefaultMaxPerRoute(5);        httpclient = new DefaultHttpClient(cm);        Thread th1 = new Thread(){            public void run(){        ExecutorService executor = Executors.newCachedThreadPool();        for(int i=0;i<10;i++){            executor.execute(new exe_post());        }                executor.shutdown();        while(!executor.isTerminated()){                    }        System.out.println("Thread1 is end");        }};

exe_post类如下:
Java code
class exe_post implements Runnable{    public void run(){        try {                        HttpPost httpost = new HttpPost("http://www.xxx.com");                         ......                         ......            httpclient.execute(httpost);                        HttpEntity entity = response.getEntity();                        判断entity内容        } catch (Exception e) {            e.printStackTrace();        }    }}


我是初学者,希望大侠、高手给予指导!
以上是我写的代码,错误一大堆啊
我的思路是这样的:
多线程并发去POST同一页面,对返回的结果页面进行分析,
如果结果页面包含某一关键字符,就停止。
否则继续重新读取

这个要怎么写呢?

------解决方案--------------------
重新看了下你的代码,发现逻辑结构有点混乱啊。

建议你的程序分为两个部分:
1、主程序,负责启动工作线程;
2、工作线程,负责执行全过程操作。

工作线程建议采用有穷自动机模型,用一个状态来跟踪整个业务流程,比如:首先是登录,然后是刷票,接下来是XXOO。前一个状态成功了,就开始处理下一个环节。

伪代码模型如下:

HttpClient client = new XXOO;
int status = 0;
public void run() {
while (true) {
switch (status) {
case 0:
if (doLogin()) status = 1;
break;
case 1:
if (doGetList()) status = 2;
。。。
。。。
}
}
}




  相关解决方案