KAKO_Reader.java 3.5 KB
package com.sy.IMF;

import com.caac.imf.api.IMFClient;
import com.sy.bwAnalysis.AnalysisRoute;
import com.sy.task.LocalFileTaskHandle;
import com.sy.utils.XMLThreadPoolFactory;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;

import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class KAKO_Reader extends Thread{
    protected static final Logger logger = Logger.getLogger(KAKO_Reader.class);
    private IMFClient client;
    public static  boolean isrunning;

    public KAKO_Reader(IMFClient client) {
        this.client = client;
    }

    @Override
    public void run() {
        try{
            isrunning =true;
            logger.info("********已进入读取线程**********");
            logger.info("********读取线程状态true**********");
            logger.info("********Client-INFO= "+client+"********");
            Thread t =Thread.currentThread();
            ThreadPoolExecutor threadPoolEs = XMLThreadPoolFactory.instance("kakou");
            AnalysisRoute analysisRoute= null;
            LocalFileTaskHandle localFileTaskHandle = null;
            while(true) {
                if (IMF_Tesk.LOGIN_OK){
                    String message = this.client.getMSG();
//                    logger.info(t.toString()+"读取线程已获取到消息");
                    if (StringUtils.isNotEmpty(message)) {
                     //   logger.info(message);

//                        analysisRoute = new AnalysisRoute();
//                        analysisRoute.setMessage(message);

                        localFileTaskHandle = new LocalFileTaskHandle();
                        localFileTaskHandle.setMessage(message);
                        threadPoolEs.execute(localFileTaskHandle);
                        logger.info("[THREADPOOL-INFO]-当前运行线程总数量: " + threadPoolEs.getActiveCount());
                        logger.info("[THREADPOOL-INFO]-当前线程数量: " + threadPoolEs.getTaskCount());
                        logger.info("[THREADPOOL-INFO]-完成的线程总数量: " + threadPoolEs.getCompletedTaskCount());
                        logger.info("[THREADPOOL-INFO]-线程队列数量: " + threadPoolEs.getQueue().size());
                        logger.info("[THREADPOOL-INFO]-空闲线程释放时间(秒): " + threadPoolEs.getKeepAliveTime(TimeUnit.SECONDS));

                        //AnalysisRoute.analysis(message);
//                        if(message.indexOf("<TYPE>CARM</TYPE>") > 0){
//                            this.client.sendMSG();
//                        }
                    }else {
//                        logger.info("[READER-INFO]-获取到空消息,不处理");
//                        System.out.println("[READER-INFO]-获取到空消息,不处理");
                    }
                }
                else {
                    logger.info("[READER-INFO]-CLIENT为未登录状态,不获取消息!!!!!");
                }

                try {
                    Thread.sleep(200L);
                } catch (InterruptedException var3) {
                    logger.info("********读取线程循环获取消息异常---->"+var3.toString());
                    var3.printStackTrace();

                }
            }

        }catch (Exception e){
            isrunning=false;
            logger.info("****************读取线程不在了****************");
            logger.info("读取线程异常----------->"+e.toString());
        }
        isrunning=false;
    }
}