首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中同时做两件事

在Java中同时做两件事
EN

Stack Overflow用户
提问于 2012-09-11 00:13:12
回答 3查看 475关注 0票数 3

我正在用Java开发一个在线游戏。我有一个客户端和一个服务器。并且语音系统等待如下显示的新消息:

代码语言:javascript
复制
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循环而停止。在这个循环中,我没有看到任何其他玩家移动或看到聊天。有没有一种方法可以运行这个方法,而不用循环接触应用程序(客户端)的其余部分?是否应该涉及线程?我希望你能回答我。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-11 00:15:42

是的,应该涉及到线程。

如果你只想与你的主执行线程并行启动一个任务,你可以这样做:

代码语言:javascript
复制
new Thread(){
   public void run(){
        addSpeech();
   }
}.start();

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

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

票数 7
EN

Stack Overflow用户

发布于 2012-09-11 00:16:55

要并发执行多个任务,需要使用多个线程。

在任何情况下,除了在GUI线程上执行微不足道的计算或延迟之外,它都被认为是不好的做法,否则它可能会锁定一段时间。

票数 0
EN

Stack Overflow用户

发布于 2012-09-11 00:19:20

使用多线程。有关更多详细信息,请查看java.util.concurrent包。您可以使用观察者模式来发送信号和通知。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12355542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档