好吧,我正在开发一个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循环,应用程序的其余部分停止。在这个循环中,我没有看到任何其他玩家移动或看到聊天。有没有办法我可以运行这个方法而不用循环接触应用程序(客户端)的其余部分?应该涉及线程吗?我希望你能回答我。
答案 0 :(得分:7)
是的,应该涉及线程。
如果您只想与主执行线程并行启动任务,则可以执行以下操作:
new Thread(){
public void run(){
addSpeech();
}
}.start();
但是你必须检查你的数据结构是否可以从多个线程中访问。
你可能想在任务结束时做点什么等等。所以我建议你找一个关于java线程和任务队列的教程。
答案 1 :(得分:0)
要同时执行多个任务,您需要使用多个线程。
在任何情况下,除了琐碎的计算或GUI线程的延迟之外,做任何事情被认为是不好的做法,否则它会锁定一段时间。
答案 2 :(得分:0)
使用多线程。查看java.util.concurrent包以获取更多详细信息。您可以使用观察者模式进行信令和通知。