为了账号安全,请及时绑定邮箱和手机立即绑定

我这个线程起的有没有问题

我这个线程起的有没有问题

慕娘9325324 2019-03-15 18:19:56
//得到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呢


查看完整回答
反对 回复 2019-04-29
?
茅侃侃

TA贡献1842条经验 获得超21个赞

有两个问题
1. process()是static的 还需要new 本类().process吗?
2. 你所谓的线程都没调用start()方法 怎么能运行?

查看完整回答
反对 回复 2019-04-29
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

内部类中 你可能会丢掉对s 的引用


查看完整回答
反对 回复 2019-04-29
?
UYOU

TA贡献1878条经验 获得超4个赞

这个应该new Thread(new Runnable(){...run(){...}}).start()


查看完整回答
反对 回复 2019-04-29
  • 4 回答
  • 0 关注
  • 384 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信