gpt4 book ai didi

java 生产者-消费者多线程基准测试。为什么会停下来?

转载 作者:太空宇宙 更新时间:2023-11-04 08:12:02 25 4
gpt4 key购买 nike

请帮我解决我的问题。

我有java程序 - 测试服务器,类似于echo,一个基准工具。

简化:

我从不同数量的线程向服务器发送 100 条消息(模拟现实世界的生产者,例如,来自 10 个客户端或 1 个客户端,这并不重要)并接收响应。

我对消费者也有同样的情况(comsumer=thread)。生产者和消费者生成事件(消息接收自...消息发送自...等)

我的主要实现了 MyEvenListener,带有 onMessage() 并对所有内容进行计数。

我的问题是我无法接收所有 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++;
}

最佳答案

我没有发现这段代码有问题。

你能尝试简化问题吗?减少线程直到问题停止发生。

在最简单的情况下,例如有 4 个线程,发生这种情况的地方

  • 获取线程堆栈,
  • 使用调试或
  • 添加日志记录以诊断问题。

关于java 生产者-消费者多线程基准测试。为什么会停下来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11028762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com