Java 我怎样做一个线程循环?

Java 我怎样做一个线程循环?,java,multithreading,Java,Multithreading,每3秒钟,我希望服务器发送一条消息。 要做到这一点,我有这个代码 try { Thread.sleep(3500); getPackets().sendGameMessage("[Server Message]: Remember to vote!"); } catch (InterruptedException e) { e.printStackTrace(); } 代码当然可以工作,等待3.5秒,发送消息。 但是如何使

每3秒钟,我希望服务器发送一条消息。 要做到这一点,我有这个代码

    try {
        Thread.sleep(3500);
        getPackets().sendGameMessage("[Server Message]: Remember to vote!");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
代码当然可以工作,等待3.5秒,发送消息。
但是如何使其循环,使其每3.5秒发送一次而不停止?

在单独的线程中生成上述代码,并将其包含在while(true)循环中

最好的方法是使用计时器。请看

我有点惊讶,在Java中处理网络的人不知道如何将代码放入无限循环中。因此,我想知道你真正的问题是“有没有更好的办法?”


关于这个问题,我认为您应该考虑使用<代码> java .UTI.Time<代码>发送消息,或者使用<代码> TeaPoTeFieldRead()/<代码>从<代码>执行器>执行器> NeXealthTeTracePooLoE(<代码> > StuteExtEutoService < /代码>)中获得消息。

这种代码不是很有用,因为它会阻塞当前线程,并且似乎会不必要地扰乱程序逻辑。最好将其委托给在后台执行发送的工作线程。还有
Thread.sleep
是不准确的

对于最新的Java版本,我认为最优雅的方法是使用
ScheduledThreadPoolExecutor

ScheduledThreadPoolExecutor executor = new ScheduledThraedPoolExecutor(1);
executor.scheduleWithFixedDelay(new Runnable() {
          public void run() {
               getPackets().sendGameMessage("[Server Message]: Remember to vote!");
          }
    }, 0, 3500, TimeUnit.MILLISECONDS);

另外,你不必担心那种恼人的
中断异常

谢谢你的回答,介意举个例子,供参考和将来参考吗?我想是自学的。可能是拿起一本电子游戏书,直接进入了关于制作多人游戏的章节。