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