Метод toMillis
Метод toMillis класса TimeUnit преобразует время,
заданное в текущей единице измерения, в миллисекунды.
Метод вызывается у конкретного объекта TimeUnit,
например SECONDS или MINUTES, и принимает
один параметр - количество единиц времени, которое нужно
перевести в миллисекунды. Возвращает метод значение типа
long - количество миллисекунд.
Класс TimeUnit удобно использовать в многопоточном
программировании: например, для перевода времени ожидания
в миллисекунды перед вызовом Thread.sleep или
Condition.await. Это делает код более читаемым,
чем ручное умножение на 1000.
Синтаксис
timeUnit.toMillis(duration)
Пример
Давайте переведем 5 секунд в миллисекунды:
import java.util.concurrent.TimeUnit;
public class Main
{
public static void main(String[] args)
{
long res = TimeUnit.SECONDS.toMillis(5);
System.out.println(res);
}
}
Результат выполнения кода:
5000
Пример
Давайте переведем 2 минуты в миллисекунды:
import java.util.concurrent.TimeUnit;
public class Main
{
public static void main(String[] args)
{
long res = TimeUnit.MINUTES.toMillis(2);
System.out.println(res);
}
}
Результат выполнения кода:
120000
Пример
Давайте переведем 3 часа в миллисекунды:
import java.util.concurrent.TimeUnit;
public class Main
{
public static void main(String[] args)
{
long res = TimeUnit.HOURS.toMillis(3);
System.out.println(res);
}
}
Результат выполнения кода:
10800000
Пример
Давайте переведем 1 день в миллисекунды:
import java.util.concurrent.TimeUnit;
public class Main
{
public static void main(String[] args)
{
long res = TimeUnit.DAYS.toMillis(1);
System.out.println(res);
}
}
Результат выполнения кода:
86400000
Пример
Давайте переведем 500 микросекунд в миллисекунды.
Обратите внимание: при переводе из меньшей единицы в большую
дробная часть отбрасывается:
import java.util.concurrent.TimeUnit;
public class Main
{
public static void main(String[] args)
{
long res = TimeUnit.MICROSECONDS.toMillis(500);
System.out.println(res);
}
}
Результат выполнения кода:
0
Пример
Давайте используем toMillis вместе с Thread.sleep,
чтобы приостановить поток на время, заданное в секундах:
import java.util.concurrent.TimeUnit;
public class Main
{
public static void main(String[] args) throws InterruptedException
{
long timeout = TimeUnit.SECONDS.toMillis(2);
System.out.println("Before sleep");
Thread.sleep(timeout);
System.out.println("After sleep");
}
}
Результат выполнения кода:
"Before sleep"
"After sleep"