Я не мог узнать, как измерить время, в течение которого поток ожидает блокировки. Я должен определить, ждет ли поток Thread больше 1 секунды, и если это так, чтобы вместо этого запустить другой поток. Благодаря!Как измерить время ожидания потока?
ответ
Попробуйте это:
long startTime = System.nanoTime();
methodToTime();
long endTime = System.nanoTime();
long duration = endTime - startTime;
@Combine Если это полезно для вас, пожалуйста, примите его в качестве правильного ответа .. :) –
Я бы сделал это, но у меня нет кредитов, чтобы оценить или выбрать правильный ответ :) Рано или поздно я буду. ура – Combine
Время это с помощью Sytem.nanoTime();
до и после ожидания.
long start = System.nanoTime();
wait();
long time = System.nanoTime() - start; // nanos
Или:
long start = System.nanoTime();
synchronized (objHere)
{
long time = System.nanoTime() - start; // nanos
// ...
}
Примечание: Если тема закрыта, планировщик будет продолжаться с другими потоками. Вам не нужно делать это вручную. Это идея потоков. Может быть, вы столкнулись с deadlock? Википедия говорит, что это красиво:
Тупик - это ситуация, при которой два или более конкурирующих действия ждут другого, и никто этого не сделает.
Как правило, методы, действующие на блокировки, принимают таймаут в качестве аргумента. Если вы используете wait(), вы можете указать количество времени, пройдя время ожидания в качестве аргумента. Подробнее читайте здесь: http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#wait%28long%29.
Если вы используете блокировку, попробуйте метод tryLock, который принимает время, которое он должен ждать. Проверьте этот учебник для идеи: http://docs.oracle.com/javase/tutorial/essential/concurrency/newlocks.html
- 1. Python: Как измерить время ожидания ввода-вывода?
- 2. Как измерить время выполнения одного потока?
- 3. Как измерить время выполнения потока Java?
- 4. Как измерить время ожидания мьютекса до его приобретения?
- 5. Выход из потока во время сна/ожидания
- 6. Как измерить время выполнения каждого потока в openmp?
- 7. Android, как измерить прошедшее время
- 8. Как измерить время вычисления
- 9. Как измерить производительность управляемого потока в .NET.
- 10. Логика ожидания потока
- 11. Как измерить время посещения пользователя
- 12. Как измерить время запуска JVM?
- 13. Как измерить время рендеринга представления?
- 14. C# как измерить прошедшее время?
- 15. Как измерить время отклика сети?
- 16. Как измерить время в Linux?
- 17. Как измерить время вычисления Excel
- 18. Как измерить время в Android?
- 19. Как измерить время работы сервлета?
- 20. Как измерить время загрузки program.exe?
- 21. Как измерить время в C?
- 22. Как измерить время загрузки страницы?
- 23. Как измерить время между нажатиями?
- 24. Как измерить время отклика планшета?
- 25. Как измерить время рисования UIImageView?
- 26. Как измерить время выполнения сборки?
- 27. Как измерить время разработки разработчика
- 28. Как измерить время выполнения скрипта?
- 29. Как измерить время сценария майя?
- 30. C как правильно измерить время?
Почему вас это волнует, если он заблокирован? Если нить занимает более 1 секунды по любой причине, вы можете запустить другой поток, или вы можете использовать ExecutorService и позволить ему создавать потоки для вас. –