Используя Object.wait (миллисекунда) для моделирования сна

Да, Наследование. Иметь базовый класс с методом set. Сделайте метод set виртуальным и переопределите его в классах Tile Primitive и Cube. Затем Simple вызовите его следующим образом:

void monster(BaseClass tile, int a, int b, int c)
{
   tile.set(a,b,c)
}

Эта функция примет любой класс, унаследованный от BaseClass, и вызовет его перезаписанный метод соответственно.

5
задан Jacques René Mesrine 2 April 2009 в 04:45
поделиться

3 ответа

Кроме необходимости получить монитор прежде, чем ожидать () нет никакого существенного различия больше, пока никто внешний не собирается быть .notify () луг.

В древнем коде Java Вы видели бы, что люди использовать ожидают () вместо Thread.sleep (), потому что Thread.sleep () заморозил бы целое приложение в системах без вытесняющей многозадачности (я смотрю на Вас OS9). Технически ожидайте () также, позвольте нам, Вы используете наноразрешение, ожидает, но на практике они редко настолько точны.

4
ответ дан 13 December 2019 в 19:36
поделиться

Обратите внимание, что существует одно основное отличие в использовании Object.wait () и Thread.sleep () в блоке синхронизации: Thread.sleep () не выпускает заблокированный монитор, таким образом, никто еще не может стать владельцем монитора.

Кроме того, Object.wait () не гарантирует, что обозначенной задержке повинуются строго. В первую очередь, после передач задержки, поток может все еще ожидать другого потока, который стал владельцем монитора тем временем; и это может конкурировать с другими потоками, ожидающими для захвата монитора.

Во-вторых, мифическое побочное пробуждение, как это описано в Java 6 API javadoc:

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

Вряд ли, как это, каждая часть кода с помощью Object.wait () должна принять его во внимание.

4
ответ дан 13 December 2019 в 19:36
поделиться

Вы говорите, что это - очевидно невоспитанность для использования, ожидают/уведомляют этого, но я не вижу ничто плохого с ним. По общему признанию развивая его с a sleep вызов очень нечетен (и глотающие исключения плохо), но я определенно использовал Object.wait как "вскрываемый сон" до настоящего времени.

Предположите, что у Вас есть поток, опрашивающий ресурс каждую минуту, но Вы хотите быть разбуженными, если что-то произошло (например, местоположение ресурса изменилось, или частота таймера изменилась, или программа хочет выйти корректным способом). Используя wait/notify работы чрезвычайно хорошо для того - это - определенно инструмент для очистки, чем вызов interrupt на потоке откуда-либо, поскольку не имеет значения, если уведомление происходит, в то время как Вы на самом деле обрабатываете вместо ожидания.

3
ответ дан 13 December 2019 в 19:36
поделиться