【问题标题】:how do i get a functon to repeat in java我如何获得在java中重复的函数
【发布时间】:2015-06-14 00:36:50
【问题描述】:

我正在制作一个 slapjack 游戏,其中卡组需要每 5 秒将卡片交给 slapzone 并翻转图像 2 秒,然后再将图片翻回。我知道我将不得不使用一个线程,但我不知道如何说每 5 秒重复一次我知道重复部分将需要一个 for 循环。

代码:

public void run ()
{
    Thread thisThread = Thread.currentThread();     
    while (thisThread == myThread)         
    {
        try
        {
            for (int i = 0 ; i < numcards ; i++)
            {
                deck.giveslapZone(slap1); 
            }

            myThread = null;                // kills the thread 
        }
        catch (InterruptedException ie) 
        {
            System.out.println(ie.getMessage());    
        }
    }
}

【问题讨论】:

  • 无限循环和Thread.sleep(5000)
  • myThread 设置为 null 不会“杀死线程”。它退出外循环。它们都显得毫无意义。

标签: java multithreading class timer


【解决方案1】:

如果您认为这可能会超越简单的实现,您可以使用ScheduledThreadPoolExecutor。调度程序线程将以更流畅的方式处理多个线程和异常。

请参阅...中的示例

TimerTask vs Thread.sleep vs Handler postDelayed - most accurate to call function every N milliseconds?

【讨论】:

    【解决方案2】:

    你可以让你的类实现 Runnable 然后声明 Thread thread = new Thread(this);接着: 例如。

    public void run() {
        while(true) {
            try
            {
                for (int i = 0; i < numcards; i++)
                {
                    deck.giveslapZone(slap1); 
                }
                thread.sleep(5000);
            }
            catch (InterruptedException ie) 
            {
                System.out.println(ie.getMessage());    
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-28
      • 2021-07-31
      • 2013-07-16
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多