我正在用Java开发一个在线游戏。我有一个客户端和一个服务器。并且语音系统等待如下显示的新消息:
public void addSpeech(String msg) {
String newMsg = parsel10n(msg);
m_narrator.addSpeech(parsel10n(newMsg));
while (!m_narrator.getCurrentLine().equalsIgnoreCase(newMsg))
;
while (!m_narrator.getAdvancedLine().equalsIgnoreCase(newMsg))
;
} 问题是..应用程序的其余部分会因为while循环而停止。在这个循环中,我没有看到任何其他玩家移动或看到聊天。有没有一种方法可以运行这个方法,而不用循环接触应用程序(客户端)的其余部分?是否应该涉及线程?我希望你能回答我。
发布于 2012-09-11 00:15:42
是的,应该涉及到线程。
如果你只想与你的主执行线程并行启动一个任务,你可以这样做:
new Thread(){
public void run(){
addSpeech();
}
}.start();但是你必须检查你的数据结构是否可以从多个线程访问。
你可能想在任务结束时做点什么,等等,所以我建议你去找一个关于java线程和任务队列的教程。
发布于 2012-09-11 00:16:55
要并发执行多个任务,需要使用多个线程。
在任何情况下,除了在GUI线程上执行微不足道的计算或延迟之外,它都被认为是不好的做法,否则它可能会锁定一段时间。
发布于 2012-09-11 00:19:20
使用多线程。有关更多详细信息,请查看java.util.concurrent包。您可以使用观察者模式来发送信号和通知。
https://stackoverflow.com/questions/12355542
复制相似问题