關於java之socket輸入流輸出流可否放在不同的線程里進行處理


2014年2月20日到叫(黑土)(人士)的公司去面試,一家新成立的公司。剛去公司是他們新聘請的獵頭A來面試我的,A面試完之后是一個號稱X總的年輕人來面試我,初一見此人有點邋遢,穿着西裝。

X:"你以前有做過地圖?"(我簡歷上有寫)

我:"是的,在地圖上做過增值"

 

X:"你以前也做過socket,那你socket怎么樣?"

我:"還行"

 

X:"如果100w的數據怎么發送?"

當時我被他這么一問,問悶了。

我也沒多想就回答:"100w的話做長連接吧"

X:"長連接很耗電?"

我:"如果是PC或者服務器,這個電不在計算的范圍內?"

X:"是發送到手機上的。"

接着我也沒下文了,悶了。

面試完了,然后回公司的路上我在想:"對呀,服務器怎么發起到手機端的socket"

郁悶中。。。。

 

平常我自己寫的原生socket(不是nio),一個socket的input和output都是在同一個線程中。即同步式的,先讀再寫或者先寫再讀(有先后順序,沒辦法隨時寫或者隨時讀)。

不過在回公司的路上之后我也在想,這個原生socket能不能把inputstream和outputstream分別放在不同的線程上面,同時有一個線程進行把數據一直放到寫隊列中。

但是一旦read線程啟動,write線程就被block了(即read被block時write也被block了)。所以同一個socket的input和output只能是放在同一個線程中進行過程式(同步式的,read之后再write,或者write之后再read)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM