官术网_书友最值得收藏!

2.2.1 偽異步I/O模型圖

采用線程池和任務(wù)隊(duì)列可以實(shí)現(xiàn)一種叫做偽異步的I/O通信框架,它的模型圖如圖2-5所示。

當(dāng)有新的客戶端接入的時(shí)候,將客戶端的Socket封裝成一個(gè)Task(該任務(wù)實(shí)現(xiàn)java.lang.Runnable接口)投遞到后端的線程池中進(jìn)行處理,JDK的線程池維護(hù)一個(gè)消息隊(duì)列和N個(gè)活躍線程對(duì)消息隊(duì)列中的任務(wù)進(jìn)行處理。由于線程池可以設(shè)置消息隊(duì)列的大小和最大線程數(shù),因此,它的資源占用是可控的,無(wú)論多少個(gè)客戶端并發(fā)訪問(wèn),都不會(huì)導(dǎo)致資源的耗盡和宕機(jī)。

圖2-5 偽異步I/O服務(wù)端通信模型(M:N)

下面的小節(jié),我們依然采用時(shí)間服務(wù)器程序,將其改造成偽異步I/O時(shí)間服務(wù)器,然后通過(guò)對(duì)代碼進(jìn)行分析,找出其弊端。

主站蜘蛛池模板: 武夷山市| 宜都市| 团风县| 双桥区| 布拖县| 两当县| 金堂县| 星子县| 读书| 乌拉特前旗| 临高县| 石河子市| 长汀县| 新野县| 钟山县| 泸溪县| 得荣县| 德保县| 福清市| 巴彦淖尔市| 光山县| 原平市| 正宁县| 紫金县| 宝山区| 楚雄市| 库伦旗| 富阳市| 内江市| 东乌珠穆沁旗| 杨浦区| 灌阳县| 叶城县| 枣庄市| 南木林县| 兰考县| 康定县| 崇义县| 屏山县| 岢岚县| 巴彦淖尔市|