В Java, возможно ли, чтобы один поток вызывал ожидание другого потока, вызывая wait() или без какой-либо сигнализации? Я на самом деле не пытаюсь достичь или реализовать какой-то практический конец, например, в сообщении How to synchronize shared data between threads by using pause then resume or alternatives. Это скорее теоретическое исследование того, возможно ли такое в потоке Java.Может ли одна нить напрямую заставлять другую очередь ждать?
2
A
ответ
2
Нет, вы не можете безопасно и надежно приостановить поток, используя обычную Java. Нити могут останавливаться, но не друг другу.
Темы имеют suspend
и resume
методы, но, как оказалось, они небезопасны и могут легко заставить всю вашу программу замерзать (тупик). Вы действительно не хотите их использовать.
1
Нет. Из одного потока невозможно сделать другой поток для ожидания/паузы, вызвав метод wait().
Механизм блокировки (синхронизация) - самый безопасный способ заставить другие потоки дождаться выполнения потока, который завершил блокировку.
Смежные вопросы
- 1. Может ли одна служба WCF вернуть другую?
- 2. Может ли одна MBean ссылка на другую?
- 3. python: Зачем мне заставлять меня ждать?
- 4. Кормление ES напрямую - нужна ли очередь?
- 5. Может ли спать ожидающая нить?
- 6. Одна запись-нить, одна прочитанная-нить в том же сокете?
- 7. Безопасно использовать volatile bool, чтобы заставить другую нить ждать? (C++)
- 8. Можно ли назначить очередь ожидания другому напрямую?
- 9. Одна нить приостановка
- 10. Несколько потребителей одна очередь
- 11. Может ли Javascript заставлять скрытые divs ждать, чтобы загрузить их содержимое? (HTML/Javascript)
- 12. Может ли сервер заставлять браузер ждать без изменения кода веб-страницы?
- 13. Пусть нить ждать диалогового ввода
- 14. Основная нить ждать других потоков
- 15. Python: Может ли одна часть скрипта перейти в другую?
- 16. Может ли одна из моих Угловых моделей смотреть другую?
- 17. Кварц: ждать другую работу
- 18. Может ли нить отслеживать процесс?
- 19. Do EventWaitHandle.Set Wake еще одна ожидающая нить?
- 20. Rabbitmq одна очередь нескольких потребителей
- 21. pthreads создается только одна нить
- 22. Будет ли одна коллекция мангуста замедлить другую?
- 23. Должен ли я заставлять напоминание?
- 24. Как можно ждать внутри петли нить
- 25. Посмотрите, содержит ли одна строка другую строку
- 26. Может ли нить удерживать два замка одновременно?
- 27. jQuery ждать анимации, запросив очередь анимации?
- 28. java spring rabbitmq сделать очередь ждать другого
- 29. RabbitMQ Bundle: Одна очередь и несколько сотрудников
- 30. Как долго блокирующая очередь будет ждать удаления элемента?
Я думаю, да .... потому что main это нить, и это может заставить другие потоки ждать ... – CoderNeji
Нет, нельзя приостановить другую тему, если вы не хотите использовать устаревшие и небезопасные методы, такие как suspend. –
Возможный дубликат [Как немедленно приостановить другую тему] (http://stackoverflow.com/questions/9952636/how-to-immediately-pause-another-thread) –