Java: Concurrency / Java: Параллелизм: 2.2. Pausing Execution with Sleep

Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Приостановка выполнения с помощью метода Sleep

maxpaint 03.06.14 в 09:23

0

`Thread.sleep` приостанавливает текущий поток на заданное время. Это является эффективным способом освободить процессорное время для других потоков этого же приложения или других приложений, которые могут выполняться в вычислительной системе. Метод `sleep` так же может быть использован для задания скорости выполнения алгоритма, как в приведенном ниже примере, и для ожидания другого потока, работа которого требует определенного времени, как в примере `SimpleThreads` из последующей части.

rusnavu 18.06.14 в 09:19

0

Имеются две переопределенные версии команды 'sleep': одна которая определяет время засыпания в миллисекундах а другая версия в наносекундах. При этом, время засыпания не гарантированно точное, потому как ограниченичения в точности связанны с возможностями операционной системы. К томуже время засыпания может быть прекращенно в результате прерывания, как это будет показанно далее.В любом случае, вы не можете быть уверенны, что применение `sleep` приостановит поток на точно указанный период времени.

lightharut 25.07.14 в 20:11

0

Пример [``SleepMessages``](examples/SleepMessages.java) использует `sleep` для вывода на экран сообщений с интервалом в четыре секунды:

PKopachevsky 23.09.14 в 04:48

0

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]);
}
}
}

rusnavu 18.06.14 в 09:13

0

Обратите внимание, что в объявлении метода "main" задано "`throws InterruptedException`". Это исключение, порождает метод 'sleep', когда другой поток прерывает текущий в то время как 'sleep' активен. Посколько в приложении не объявлено другого потока, который мог бы вызвать прерывание, не нужно беспокоиться об обработке исключения 'InterruptedException'.

PKopachevsky 23.09.14 в 04:53

0
Минутку...