java 多线程的问题,请教下

sjhxuelang 2013-07-21 11:26:08
最近做个项目遇到个问题,请教下各位?
项目功能是采集数据,前端大概有100个采集点,采集设备主动发送数据包,每十五分钟一个心跳包,再十五分钟一个数据包,也就是说服务器半小时读取一次数据。服务器现有三个端口,不排除以后增加的可能性。我在服务器端开启多个线程接收数据包,我想针对每一个采集设备开一个线程,非一个数据包一个线程,我写了段代码,不知道可对,麻烦帮我看看
线程启动,args用来保存端口号,默认采用8001

//处理端口号冲突
if (args.length < 1 ) {
ss = new ServerSocket(8001);
} else {
ss = new ServerSocket(Integer.parseInt(args[0]));
}
boolean bRunning = true;
while(bRunning){
Socket s= ss.accept();
new Thread(new serverStart(s)).start();
}

线程启动:

private Socket s = null;
InputStream ips;
OutputStream ops;
private volatile boolean running = true;
public serverStart(Socket s) throws IOException {
this.s = s;
ips = s.getInputStream();
ops = s.getOutputStream();
}

public void run(){
while(running){
try {
Message m = read();
System.out.println("收到信息");
} catch (Exception e) {
e.printStackTrace();
}
}
try {
if(s!=null)s.close();
} catch (IOException e) {
}
}
...全文
193 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
我是新手有,表示学习
sjhxuelang 2013-07-22
  • 打赏
  • 举报
回复
好像被淹没了!
sjhxuelang 2013-07-22
  • 打赏
  • 举报
回复
再顶一下!有人回答不?
MiceRice 2013-07-22
  • 打赏
  • 举报
回复
是为每个连接开一个线程,连接建立后只要不断开,就持续用这个连接了。 另外,你客户端的数据包必然也应该是在一个连接中连续发送的。 当然,如果你一个客户端就喜欢发起N次连接,那么就是N个线程了。
sjhxuelang 2013-07-22
  • 打赏
  • 举报
回复
@mice rice 这个能为每个客户端开启一个线程?不是每个数据包哦
MiceRice 2013-07-22
  • 打赏
  • 举报
回复
应该没啥问题。
冷笑 2013-07-22
  • 打赏
  • 举报
回复
啧啧,新手,直个看不懂
sjhxuelang 2013-07-21
  • 打赏
  • 举报
回复
serverStart类实现了Runable接口,如果线程没有数据解析时,休眠即可,当新的数据包过来,线程激活!

67,514

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧