【发布时间】:2014-06-28 02:55:06
【问题描述】:
我尝试制作纸牌游戏。我遇到了线程问题。我只构造了一次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相同的objectinputstream。我得到一个异常:java.io.StreamCorruptedException:无效类型代码:00。两个类做不同的工作只有这部分是相似的。请告诉我如何解决这个问题。是有什么办法吗?
【问题讨论】:
标签: java multithreading