+
 新版

针对同一个客户端,MINA怎么可以同时开启多个线程以不同的频率发送多种消息呢?

颖辉小居 发布于 2016/01/12 20:58
阅读 2K+
收藏 0

我的项目要求在客户端连接到服务器的时候,就会时时的给他每秒一次的推送数据,还有其他的数据有的是5秒一次,有的是1分一次。我试着自己建了多个线程传入ISsession 发送数据 总是报错。如果只开启一个线程就正常。

下面是hander中的代码:

@Override
	public void sessionOpened(IoSession session) throws Exception {
		System.out.println("【server】sessionOpened ID:" + session.getId());
		if (allIoSessions == null) {
			allIoSessions = session.getService().getManagedSessions();
		}
		System.out.println("有人连接,当前客户数:" + allIoSessions.size());
		new Thread(new AllPoliceCoordsThread(session, service)).start();
		new Thread(new HotPoliceCoordsThread(session, service)).start();
		new Thread(new UserCoordsThread(session, service)).start();

	}

注释掉两个线程的话,只留一个(1秒发一次)就正常了。可是如果把频率改成1毫秒一次。就算一个线程也要不停地报错

加载中
1
码未央
码未央
增加一个队列,多线程产生的消息都先入队
0
颖辉小居
颖辉小居

时隔一年再看这个问题 感触良多

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部