You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java测验实现中客户端无法接收下一题的原因排查

移除注释后客户端停滞的原因分析

核心问题:空指针异常导致线程终止

  1. 集合初始化错误
    Server类中初始化共享集合lista时,所有键对应的value都被设为null:
for(int i=1;i<l;i++) {
    lista.put(i, null);
}

移除注释执行这段代码时:

for(Entry<Integer,List<String>> m: server.lista.entrySet()) {
    if(c==m.getKey()) {
        m.getValue().add(name); // 触发空指针异常
    }
}

m.getValue()返回null,调用add()方法直接抛出NullPointerException。

  1. 异常处理不当
    UserThread的run()方法中捕获了所有Exception,但捕获后没有任何处理逻辑,直接让线程终止:
catch (Exception e) {
    // TODO: handle exception
}

异常被静默处理后,线程直接退出,后续发送下一题的循环逻辑完全停止,客户端就会卡在等待下一题的状态。

次要问题:集合键不完整

Server中lengthHashMap()计算出题目数量是4,但初始化集合时用了i<l的循环,导致lista中只存在1、2、3三个键,当用户做完第4题时,遍历集合找不到对应键,不过这不是导致本次停滞的直接原因。


内容的提问来源于stack exchange,提问作者Broj 1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 20:06:59