在Java中同时做两件事

时间:2012-09-10 16:13:12

标签: java

好吧,我正在开发一个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循环,应用程序的其余部分停止。在这个循环中,我没有看到任何其他玩家移动或看到聊天。有没有办法我可以运行这个方法而不用循环接触应用程序(客户端)的其余部分?应该涉及线程吗?我希望你能回答我。

3 个答案:

答案 0 :(得分:7)

是的,应该涉及线程。

如果您只想与主执行线程并行启动任务,则可以执行以下操作:

new Thread(){
   public void run(){
        addSpeech();
   }
}.start();

但是你必须检查你的数据结构是否可以从多个线程中访问。

你可能想在任务结束时做点什么等等。所以我建议你找一个关于java线程和任务队列的教程。

答案 1 :(得分:0)

要同时执行多个任务,您需要使用多个线程。

在任何情况下,除了琐碎的计算或GUI线程的延迟之外,做任何事情被认为是不好的做法,否则它会锁定一段时间。

答案 2 :(得分:0)

使用多线程。查看java.util.concurrent包以获取更多详细信息。您可以使用观察者模式进行信令和通知。