gpt4 book ai didi

java多线程两个线程尝试同时从同一对象输入流读取object()

转载 作者:行者123 更新时间:2023-12-01 17:11:29 25 4
gpt4 key购买 nike

我尝试制作纸牌游戏。我遇到线程问题。我仅构造一次 objectinputstream,然后将对其的引用发送到另一个线程,并且两个线程尝试同时从同一 objectinputstream 读取对象。同样的问题是 java.io.StreamCorruptedException: invalid type code: 00但并没有解决。

客户端服务线程:

    while (true) {
try {
Message message = (Message) in.readObject();
handleClientMessage(message);
if (message.getType() == Message.messageType.ClientDisconnect) {
break;
}
} catch (IOException ex) {
Logger.getLogger(ClientServiceThread.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(ClientServiceThread.class.getName()).log(Level.SEVERE, null, ex);
}
}

游戏主题

public void run() {
startGame();

while (true) {
try {
Message msg = (Message) inPlayer1.readObject();
handlePlayerMessage(msg);
} catch (IOException ex) {
Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
}
}
}

在和inplayer1相同的对象输入流中。我得到一个异常:java.io.StreamCorruptedException:无效类型代码:00。两个类做了不同的工作,只有这部分是相似的。请给我如何解决这个问题的建议。是有什么办法吗?

最佳答案

只需一个线程读取流并执行每个对象需要完成的所有操作。

该线程可以完成两个线程的所有工作和/或者您可以在线程之间发送消息以使其他线程执行额外的工作。

关于java多线程两个线程尝试同时从同一对象输入流读取object(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23580333/

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