Как я могу выйти из цикла в одну секунду, используя Runtime?

Как я могу выйти из цикла в одну секунду, используя Runtime? Я хочу использовать этот код

public class test {
    public static void main(String[] args) {
    Runtime runtime = Runtime.getRuntime();
    long usedMemory = runtime.totalMemory()-runtime.freeMemory();
    int mbytes = (int) usedMemory/1000; // Used memory (Mbytes)
    String str="a";

        while (somthing < one second ) {


       }
}

5 ответов

Решение
long startTime = System.currentTimeMillis();

while((System.currentTimeMillis()-startTime)<=1000){
     str=str + "a"; 
}

Для этого нужно записать время начала, а затем сравнить его с текущим временем.

    long start = System.currentTimeMillis();
    String str="a";
    while (true) {
        long now = System.currentTimeMillis();
        if (now - start > 1000)
             break;

        // do your stuff
        str=str + "a"; 
    }

    System.out.println (str);

Приведенный выше код, вероятно, будет тратить больше времени на то, чтобы делать то, что вы хотите, хотя

Я думаю, что вы можете использовать что-то вроде этого, если вам действительно не нужно использовать Runtime.

public class test {
    public static void main(String[] args) {
    long startTime = System.currentTimeMillis();
    long currentTime = System.currentTimeMillis();
    long usedMemory = runtime.totalMemory()-runtime.freeMemory();
    int mbytes = (int) usedMemory/1000; // Used memory (Mbytes)
    String str="a";

    while (currentTime-startTime<1000) {
        currentTime = System.currentTimeMillis();
    }
}
 long startTime = System.currentTimeMillis();
 while((System.currentTimeMillis()-startTime)<1000){
// Your task goes here
}

Напишите свой код в цикле while. Он выйдет из цикла через 1 секунду.

long start = System.currentTimeMillis();
long end = start + 1000; //  1000 ms/sec
while (System.currentTimeMillis() < end)
{
    // Write your code here
}
Другие вопросы по тегам