Можно замедлить время простоя в виртуальной машине Java?

StackOverflow https://stackoverflow.com/questions/5851498

  •  27-10-2019
  •  | 
  •  

Вопрос

Можно ли замедлить время в виртуальной машине Java в соответствии с использованием процессора путем изменения исходного кода OpenJDK? У меня есть сетевая моделирование (Java to NS-3), которая потребляет в реальном времени, синхронизируется свободно до стен. Однако, поскольку я управляю так много клиентов в моделировании, использование процессора достигает 100%, а жесткие гарантии не поддерживаются в отношении того, как длины события в симуляторе должны предпринять для обработки (то есть, большое количество супер-лаковских событий). Следовательно, моделирование превышает около 40 узлов, когда есть много сетевого трафика, и даже тогда это немного замораживает. Идеальным решением было бы замедлить время в соответствии с процессором, но я не уверен, как сделать это успешно. Меньшее решение состоит в том, чтобы просто замедлить время на несколько многократных (время линзирования?).

Если кто -то может дать некоторое руководство, исходный код для соответствующего файла, вопроса (для Windows), находится в http://pastebin.com/rsqpcdbd. Анкет Я пытался изменить некоторые части файла, но мои результаты не были очень успешными.

Заранее спасибо,
Крис

Это было полезно?

Решение

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

Другие советы

Я не совсем уверен, это то, что вы хотите, но с Joda-Time Библиотека вы можете полностью остановить время. Таким образом, вызовы в новую дату () или New DateTime () в Joda-Time постоянно вернется в то же время.

Итак, вы могли бы, в одной ветке «время остановки» с этим вызовом:

DateTimeUtils.setCurrentMillisFixed(System.currentTimeMillis());

Затем ваша ветка может спать, скажем, 5000 мс, а затем позвонить:

// advance time by one second
DateTimeUtils.setCurrentMillisFixed(System.currentTimeMillis() + 1000);

Таким образом, если приложение делает все, что делает, в зависимости от времени в системе, это «замедлит» время, устанавливая время вперед на одну секунду каждые 5 секунд.

Но, как я сказал ... Я не уверен, что это будет работать в вашей среде.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top