Мое знание тем очень ограничено.Я оказался парнем, который может писать многопоточные программы, но просто копируя их и находя ответы на мои вопросы в Интернете.Но я наконец решил немного узнать о параллелизме и купил книгу «Параллелизм Java на практике».Прочитав пару страниц, я уверен, что многому научусь из этой книги.
Может быть, я немного нетерпелив, но не могу удержаться от соблазна задать этот вопрос.Это заставило меня создать аккаунт в Stack Overflow.Я не уверен, что смогу правильно сформулировать вопрос, поэтому я попытаюсь объяснить свой вопрос на примере.
Если бы мне пришлось написать (крайне непрофессионально) одноранговыйскажем, в чате клиента на Java я буду устанавливать сокетное соединение между клиентами и поддерживать его, потому что сообщения могут поступать в любое время.Решение, которое я могу себе представить, заключается в том, чтобы открыть соединение с сокетом в новом потоке и непрерывно выполнять цикл while, чтобы сохранить поток живым, так как поток умирает, как только возвращается run
.По какой-то причине я не могу представить похожий чат-клиент в однопоточной программе.Как вы можете продолжать «ждать», пока не прибудет сообщение, если все, что у вас есть, это один поток.Разве это не блокирует выполнение всей программы?
Чтобы решить такую проблему, какова альтернатива непрерывному циклу while
?