嗯,我正在用 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 循环,应用程序的其余部分停止了。在此循环中,我没有看到任何其他玩家移动或看到聊天。有没有一种方法可以在不使用循环接触应用程序(客户端)的其余部分的情况下运行此方法?应该涉及线程吗?我希望你能回答我。
最佳答案
是的,应该涉及线程。
如果您只想在主执行线程的同时启动一个任务,您可以这样做:
new Thread(){
public void run(){
addSpeech();
}
}.start();
但是您必须检查您的数据结构是否可以从多个线程访问。
而且您可能想在任务结束时做一些事情,等等。所以我建议您查找有关 Java 线程和任务队列的教程。
关于java - Java同时做两件事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12355542/