А где бы объявить эту тему? Имейте в виду, что любая ссылка на функцию, содержащую спящий поток, приведет к приостановке основного потока. Поскольку основной поток должен ждать паузу вспомогательного потока.
Реальность такова, что потоки в действительности не работают как отдельный независимый поток, потому что поток должен быть запущен из другого потока. Другими словами, если вы создаете настольное приложение и даже если вы не работаете с другими потоками, ваше приложение является однопоточным. Теперь, если вы начнете работать с потоками и перевести их в спящий режим, вы скоро обнаружите, что больше ничего не сможете делать в приложении. Нет и нет, другие потоки даже не запускаются, потому что они ждут, когда первый поток завершит спящий режим. Почему это? Причина в том, что потоки являются подпотоками основного потока, и это основной поток, который ожидает, что этот подпоток сна проснется. Вы также не можете создавать приложения без потоков, поскольку java - это одно основное потоковое приложение. Любой, да любой, поток, определенный в вашем приложении, всегда выполняется внутри основного потока.
Если кто-то не докажет, что я неправ, вы, очевидно, никогда не остановите свой основной поток, поскольку это заблокирует ваше приложение. Однако, как только вы определите другой поток и приостановите его с помощью sleep()
, это также заблокирует ваше приложение, так как поток был определен в подклассе основного приложения и, следовательно, основного потока.
Таким образом, положить очень длинную историю в постель, приостановив пользовательский поток, почти так же, как если бы вы назвали Thread.sleep()
для любого места в вашем приложении, это
приостанавливает все приложение.