課程
/后端開發
/Java
/Java Socket應用---通信是這樣練成的
如果不用線程 直接在Server 類中加入while死循環同樣是達到多客戶端請求的效果??!
2016-04-24
源自:Java Socket應用---通信是這樣練成的 3-5
正在回答
提到多線程,往往還會想起另一個詞:并發。前者是手段,后者是目的。
并發,顧名思義指同時發生,這里這個問題我所知只有多線程能解決。題主所提出的猜想咋一看似乎可行,實則不然。假如我們將講師的代碼改一改,將服務端給客戶端發的消息改成用戶在控制臺輸入,然后再發給客戶端,而客戶端也類似于此修改。修改之后按照題主的猜想,假設第一個客戶端連上服務端后,用戶不往控制臺輸入內容,那么客戶端和服務端程序就會卡(阻塞)在相應的這一行,直到用戶往里輸入內容并以回車結束后才會繼續執行程序。
這此期間,服務端一直停著,試問如何分身去響應第二、第三……,甚至更多用戶的申請呢?
而多線程的并發,只要沒有公用同一資源,相互之間獨立運行、互不影響。講個類比的故事。
沙僧要去流沙河做無本買賣,可一個人沒膽量去就來求大師兄,于是大師兄就拔了一根毛一吹,變成一個分身陪沙僧去了;八戒要去高老莊強媳婦兒,可一個人搶不贏就來求大師兄,于是大師兄就拔了一根毛一吹,變成另一個分身陪八戒去了;……
這個故事里的大師兄就好好比是服務端,它負責等待各路鬼神來求他辦事兒,并變出一個個相互獨立、互不影響的分身去幫各路妖精干各自的事情。吹毛變分身的是大師兄,就好比是循環等待并處理申請的線程啟動類;辦事兒的是分身,就好比一個個被線程啟動類啟動的線程。
p.s. 不知道這個一時隨想的類比例子是否貼切,容易理解?
給樓上+1
線程的好處在于同時進行不延遲,
加個while:第一個客戶端響應完,執行完第二個才可以進入,也就是同一時間只能響應一個
利用線程 :可以同時執行serversocket.start(),即同時響應多個
花黑暗里開放
舉報
分享的是 Java 中的網絡編程,使用Socket實現網絡聊天通信
5 回答求指教:UDP線程接收多客戶端數據
2 回答我在用多線程實現多個udp客戶端的問題
1 回答在使用多線程實現基于UDP的多客戶端與服務端連接時,發現有時候客戶端可能會收不到服務端的回應?
1 回答真的 我太多不懂!~簡單的echo我會了,為多個客戶端開啟多線程我也會??墒窍旅娌粫浚?/p>
2 回答客戶端A通過服務器給客戶端B發送消息
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-07-01
提到多線程,往往還會想起另一個詞:并發。前者是手段,后者是目的。
并發,顧名思義指同時發生,這里這個問題我所知只有多線程能解決。題主所提出的猜想咋一看似乎可行,實則不然。假如我們將講師的代碼改一改,將服務端給客戶端發的消息改成用戶在控制臺輸入,然后再發給客戶端,而客戶端也類似于此修改。修改之后按照題主的猜想,假設第一個客戶端連上服務端后,用戶不往控制臺輸入內容,那么客戶端和服務端程序就會卡(阻塞)在相應的這一行,直到用戶往里輸入內容并以回車結束后才會繼續執行程序。
這此期間,服務端一直停著,試問如何分身去響應第二、第三……,甚至更多用戶的申請呢?
而多線程的并發,只要沒有公用同一資源,相互之間獨立運行、互不影響。講個類比的故事。
沙僧要去流沙河做無本買賣,可一個人沒膽量去就來求大師兄,于是大師兄就拔了一根毛一吹,變成一個分身陪沙僧去了;八戒要去高老莊強媳婦兒,可一個人搶不贏就來求大師兄,于是大師兄就拔了一根毛一吹,變成另一個分身陪八戒去了;……
這個故事里的大師兄就好好比是服務端,它負責等待各路鬼神來求他辦事兒,并變出一個個相互獨立、互不影響的分身去幫各路妖精干各自的事情。吹毛變分身的是大師兄,就好比是循環等待并處理申請的線程啟動類;辦事兒的是分身,就好比一個個被線程啟動類啟動的線程。
p.s. 不知道這個一時隨想的類比例子是否貼切,容易理解?
2016-05-10
給樓上+1
2016-04-24
線程的好處在于同時進行不延遲,
加個while:第一個客戶端響應完,執行完第二個才可以進入,也就是同一時間只能響應一個
利用線程 :可以同時執行serversocket.start(),即同時響應多個