我试图在Java中做一些事情,我需要在while循环中等待/延迟一段时间。

while (true) {
    if (i == 3) {
        i = 0;
    }

    ceva[i].setSelected(true);

    // I need to wait here

    ceva[i].setSelected(false);

    // I need to wait here

    i++;
}

我想做一个音序器。

如何在Java中进行延迟?


当前回答

我知道这是一个非常老的帖子,但这可能会帮助到一些人: 你可以创建一个方法,所以当你需要暂停时,你可以输入pause(1000)或任何其他毫秒值:

public static void pause(int ms) {
    try {
        Thread.sleep(ms);
    } catch (InterruptedException e) {
        System.err.format("IOException: %s%n", e);
    }
}

它被插入到类内部的公共静态void main(String[] args)之上。然后,要调用该方法,键入pause(ms),但将ms替换为要暂停的毫秒数。这样,就不必在需要暂停时插入整个try-catch语句。

其他回答

用这个:

public static void wait(int ms)
{
    try
    {
        Thread.sleep(ms);
    }
    catch(InterruptedException ex)
    {
        Thread.currentThread().interrupt();
    }
}

然后,你可以在任何地方调用这个方法,比如:

wait(1000);

使用TimeUnit.SECONDS.sleep (1);或thread . sleep (1000);是可以接受的方法。在这两种情况下,你都必须捕获interruptedexception,这会使你的代码变得笨重。有一个名为MgntUtils的开源java库(由我编写),它提供的实用程序已经在内部处理InterruptedException。所以你的代码只包含一行:

TimeUtils.sleepFor(1, TimeUnit.SECONDS);

点击这里查看javadoc。您可以从Maven Central或Github访问库。关于图书馆的文章可以在这里找到

你需要使用Thread.sleep()调用。

更多信息请访问:http://docs.oracle.com/javase/tutorial/essential/concurrency/sleep.html

使用thread . sleep(100);。 时间单位为毫秒

例如:

public class SleepMessages {
    public static void main(String args[])
        throws InterruptedException {
        String importantInfo[] = {
            "Mares eat oats",
            "Does eat oats",
            "Little lambs eat ivy",
            "A kid will eat ivy too"
        };

        for (int i = 0;
             i < importantInfo.length;
             i++) {
            //Pause for 4 seconds
            Thread.sleep(4000);
            //Print a message
            System.out.println(importantInfo[i]);
        }
    }
}

我知道这是一个非常老的帖子,但这可能会帮助到一些人: 你可以创建一个方法,所以当你需要暂停时,你可以输入pause(1000)或任何其他毫秒值:

public static void pause(int ms) {
    try {
        Thread.sleep(ms);
    } catch (InterruptedException e) {
        System.err.format("IOException: %s%n", e);
    }
}

它被插入到类内部的公共静态void main(String[] args)之上。然后,要调用该方法,键入pause(ms),但将ms替换为要暂停的毫秒数。这样,就不必在需要暂停时插入整个try-catch语句。