在Java中同时做两件事

Fab*_*Pas 3 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))
      ;
 } 
Run Code Online (Sandbox Code Playgroud)

问题是..由于while循环,应用程序的其余部分停止.在这个循环中,我没有看到任何其他玩家移动或看到聊天.有没有办法我可以运行这个方法而不用循环接触应用程序(客户端)的其余部分?应该涉及线程吗?我希望你能回答我.

Den*_*ret 7

是的,应该涉及线程.

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

new Thread(){
   public void run(){
        addSpeech();
   }
}.start();
Run Code Online (Sandbox Code Playgroud)

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

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