//得到socket及其它信息private static SessionBean sessionBean = SessionBean.getInstance();/**
* 报文处理及生成CSV文件流程
* @return void 无返回值
*/
public static void process(){
//从上层sessionBean中得到一个socket,socket负责接收实时消息
Socket s = sessionBean.getSocket();
new Runnable() {
public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
String data = br.readLine();
//得到所需要的数据
String needData = getNeedMessage(data);
//处理所需要的数据
dataHandle(needData);
//生成CSV文件
writeCsvFile();
} catch (IOException e) {
logger.error("报文信息读取失败");
}
}
};
}
4 回答
米脂
TA贡献1836条经验 获得超3个赞
不太清楚你的业务场景,就只能从代码上面说了
1.你并没有new Thread,只是构造了一个Runnable的实例,等于你的这个Runnable并没有被执行
2.对于socket,你只是获取操作了,并没有关闭,这里也是一个隐患,关闭的时候最好是finally中关闭
3.getSocket这个方法并没有看到具体的代码,是否需要同步
4.process这个方法本身就是static的,为什么你还要new呢
茅侃侃
TA贡献1842条经验 获得超21个赞
有两个问题
1. process()是static的 还需要new 本类().process吗?
2. 你所谓的线程都没调用start()方法 怎么能运行?
添加回答
举报
0/150
提交
取消