请帮我解决我的问题。
我有服务器的java程序测试,像echo,一个基准测试工具。
要简化操作:
我从不同数量的线程向服务器发送100条消息(例如,模拟真实世界的生产者,例如,来自10个客户端或1个客户端,这并不重要),并接收响应。
我在消费者(comsumer=thread)方面也遇到了同样的情况。生产者和消费者生成事件(消息接收自...邮件发件人...等)
我的main使用onMessage()实现MyEvenListener,并对所有内容进行计数。
我的问题是,我不能接收所有100条消息并对它们进行计数,因为程序在消息发送后停止。我知道这很简单,但我不知道如何修复它。:(
下面是我的代码:
public static void main(String[] args) throws InterruptedException {
Main m = new Main();
m.init();
}
private int mesReceved=0;
public void init() throws InterruptedException {
Sender s = new Sender(15,this);
Resender r = new Resender(15,this);
r.createThreads();
r.startThreads();
s.createThreads();
s.startThreads();
System.out.println(mesReceved);
}
public void onEvent(String string) {
mesReceved++;
}发布于 2012-06-14 15:53:13
我看不出这段代码有什么问题。
你能试着简化这个问题吗?例如,减少线程数,直到问题停止。
在最简单的情况下,例如使用4个线程,会发生这种情况
发布于 2012-06-14 19:37:53
在离开main之前,您是否真的在等待线程结束?您应该在main末尾的所有创建的线程上使用Thread.join,否则主线程将直接退出,而不会等待子线程完成。
发布于 2012-06-14 16:04:31
你是如何启动你的程序的?它可能会成功完成,然后关闭窗口。有几种方法可以解决这个问题。
脑海中浮现的一个想法是,您可以尝试在main中使用Thread.sleep(时间)。(其中时间是您希望它等待的时间,以毫秒为单位。)
https://stackoverflow.com/questions/11028762
复制相似问题