Java循环,同时保持另一个代码运行

Java循环,同时保持另一个代码运行,java,input,Java,Input,我不知道如何做到这一点。我想有一个计时器,这将保持一个循环上永远,但当循环运行,我希望能够有一个扫描仪运行,等待用户输入。基本上就像聊天。循环将不断检查发布的任何新消息,但在循环运行时,用户仍可以提交消息 我该怎么做 而且我还没有GUI设置。这一切都在一个简单的命令提示符下运行(如果有必要)。您可以使用辅助线程设计模式来设计它。请参考以下链接了解更多信息: 您可以运行一个线程,该线程正在等待输入。一旦输入,主程序可以调用线程中的一个方法,然后决定是终止循环还是继续进行。好吧,听起来很早

我不知道如何做到这一点。我想有一个计时器,这将保持一个循环上永远,但当循环运行,我希望能够有一个扫描仪运行,等待用户输入。基本上就像聊天。循环将不断检查发布的任何新消息,但在循环运行时,用户仍可以提交消息

我该怎么做


而且我还没有GUI设置。这一切都在一个简单的命令提示符下运行(如果有必要)。

您可以使用辅助线程设计模式来设计它。请参考以下链接了解更多信息:


    • 您可以运行一个线程,该线程正在等待输入。一旦输入,主程序可以调用线程中的一个方法,然后决定是终止循环还是继续进行。

      好吧,听起来很早,但您可以执行多个线程,也可以让循环在来自用户的新消息之间来回跳转,并检查是否有新的东西张贴

      如果您正在从
      InputStream
      (或其子类之一)读取数据,可以调用
      available
      方法检查可用字节数If>0(如果有任何内容可以从其他聊天参与者或用户输入中读取)

      所以,一个循环:

      • 如果(新消息)…发布新消息
      • 如果(newUserChat)…发送新消息

      这基本上就是它的全部内容。

      您可以使用多线程应用程序,但在我看来,这比您所寻找的要复杂一些

      : 尝试定义一个计时器,并向其添加一个timertask,然后在循环中输入:

          Scanner scan = new Scanner(System.in);
          Timer timer = new Timer();
          timer.schedule(new TimerTask() {
      
              @Override
              public void run() {
                  //Do whatever you want with your messages here
              }
          }, 0, 1000);
      
          //Wait for user input
          while(true) {
              String bar = scan.next();
          }
      

      是的,但是这会每秒重置一次扫描程序,它会显示是否有新消息,但是如果你在这期间键入消息,我想消息扫描程序会重置。我不确定你的意思。当计时器同时运行时,代码将停留在“while(true)”循环中,扫描器不应该重置哦,这可能是因为我在命令提示符下运行,所以它给人一种重置的印象,我会测试它并查看,这是因为它在命令提示符下,而它给人的印象是它实际上没有重置。谢谢你的帮助,我将使用此方法:)。我还是太新了,使用worker线程和sleep()的其他方法似乎有点复杂。