gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区

站長資訊網
最全最豐富的資訊網站

Java NIO類庫Selector機制解析(下)

五、 迷惑不解 : 為什么要自己消耗資源?

令人不解的是為什么我們的Java的New I/O要設計成這個樣子?如果說老的I/O不能多路復用,如下圖所示,要開N多的線程去挨個偵聽每一個Channel
(文件描述符) ,如果這樣做很費資源,且效率不高的話。那為什么在新的I/O機制依然需要自己連接自己,而且,還是重復連接,消耗雙倍的資源?

通過WEB搜索引擎沒有找到為什么。只看到N多的人在報BUG,但SUN卻沒有任何解釋。

下面一個圖展示了,老的IO和新IO的在網絡編程方面的差別。看起來NIO的確很好很強大。但似乎比起C/C++來說,Java的這種實現會有一些不必要的開銷。

六、 它山之石 : 從Apache的Mina框架了解Selector

上面的調查沒過多長時間,正好同學趙錕的一個同事也在開發網絡程序,這位仁兄使用了Apache的Mina框架。當我們把Mina框架的源碼研讀了一下后。發現在Mina中有這么一個機制:

1)Mina框架會創建一個Work對象的線程。

2)Work對象的線程的run()方法會從一個隊列中拿出一堆Channel,然后使用Selector.select()方法來偵聽是否有數據可以讀/寫。

3)最關鍵的是,在select的時候,如果隊列有新的Channel加入,那么,Selector.select()會被喚醒,然后重新select最新的Channel集合。

4)要喚醒select方法,只需要調用Selector的wakeup()方法。

對于熟悉于系統調用的C/C++程序員來說,一個阻塞在select上的線程有以下三種方式可以被喚醒:

1) 有數據可讀/寫,或出現異常。

2) 阻塞時間到,即time out。

3) 收到一個non-block的信號。可由kill或pthread_kill發出。

所以,Selector.wakeup()要喚醒阻塞的select,那么也只能通過這三種方法,其中:

1)第二種方法可以排除,因為select一旦阻塞,應無法修改其time out時間。

2)而第三種看來只能在Linux上實現,Windows上沒有這種信號通知的機制。

所以,看來只有第一種方法了。再回想到為什么每個Selector.open(),在Windows會建立一對自己和自己的loopback的TCP連接;在Linux上會開一對pipe(pipe在Linux下一般都是成對打開),估計我們能夠猜得出來——那就是如果想要喚醒select,只需要朝著自己的這個loopback連接發點數據過去,于是,就可以喚醒阻塞在select上的線程了。

七、 真相大白 : 可愛的Java你太不容易了

使用Linux下的strace命令,我們可以方便地證明這一點。參看下圖。圖中,請注意下面幾點:

1) 26654是主線程,之前我輸出notify the select字符串是為了做一個標記,而不至于迷失在大量的strace log中。

2) 26662是偵聽線程,也就是select阻塞的線程。

3) 圖中選中的兩行。26654的write正是wakeup()方法的系統調用,而緊接著的就是26662的epoll_wait的返回。

從上圖可見,這和我們之前的猜想正好一樣。可見,JDK的Selector自己和自己建的那些TCP連接或是pipe,正是用來實現Selector的notify和wakeup的功能的。

這兩個方法完全是來模仿Linux中的的kill和pthread_kill給阻塞在select上的線程發信號的。但因為發信號這個東西并不是一個跨平臺的標準(pthread_kill這個系統調用也不是所有Unix/Linux都支持的),而pipe是所有的Unix/Linux所支持的,但Windows又不支持,所以,Windows用了TCP連接來實現這個事。

關于Windows,我一直在想,Windows的防火墻的設置是不是會讓Java的類似的程序執行異常呢?呵呵。如果不知道Java的SDK有這樣的機制,誰知道會有多少個程序為此引起的問題度過多少個不眠之夜,尤其是Java程序員。

八、 后記

文章到這里是可以結束了,但關于Java NIO的Selector引出來的其它話題還有許多,比如關于GNU
的Java編譯器又是如何,它是否會像Sun的Java解釋器如此做傻事?我在這里先賣一個關子,關于GNU的Java編譯器,我會在另外一篇文章中講述,近期發布,敬請期待。

關于本文中所使用的實驗平臺如下:

◆  Windows:Windows XP + SP2, Sun J2SE (build 1.7.0-ea-b23)

◆  Linux:Ubuntu 7.10 + Linux Kernel 2.6.22-14-generic, J2SE (build
1.6.0_03-b05)

本文主要的調查工作由我的大學同學趙錕完成,我幫其驗證調查成果及猜想。在此也向大家介紹我的大學同學趙錕,他也是一個技術高手,在軟件開發方面,特別是Unix/Linux
C/C++方面有著相當的功底,相信自此以后,會有很多文章會由我和他一同發布。

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
gmnon.cn-疯狂蹂躏欧美一区二区精品,欧美精品久久久久a,高清在线视频日韩欧美,日韩免费av一区二区
992tv成人免费观看| 老司机午夜免费福利视频| 国产91沈先生在线播放| 在线免费黄色小视频| 国产精品天天av精麻传媒| 久久成人福利视频| 美女av免费观看| 国产免费人做人爱午夜视频| 成年人免费大片| 在线观看污视频| www污在线观看| 国产精品国产亚洲精品看不卡| 国产 欧美 日韩 一区| 中文av一区二区三区| 超碰在线人人爱| 三级在线视频观看| 免费一级特黄特色毛片久久看| 亚洲涩涩在线观看| 日本一本在线视频| 992kp快乐看片永久免费网址| 男人的天堂avav| 中文字幕在线视频一区二区| 69久久久久久| 久久精品.com| 最新中文字幕2018| 国产91在线视频观看| 男人的天堂最新网址| 日本不卡一区二区三区四区| 成人手机在线播放| 在线观看免费的av| 亚洲男人天堂色| 免费国产a级片| 日韩av片网站| 欧美成人xxxxx| 精品无码国模私拍视频| av动漫在线播放| 麻豆一区二区三区在线观看| 亚洲激情在线看| 天堂在线资源视频| 992kp快乐看片永久免费网址| 红桃av在线播放| 成人观看免费完整观看| 国产精品50p| 精品欧美一区免费观看α√| 草草视频在线免费观看| 波多野结衣与黑人| 97在线免费视频观看| 日韩精品第1页| 中文字幕の友人北条麻妃| 色爽爽爽爽爽爽爽爽| 热这里只有精品| 亚洲第一综合网站| 青青草免费在线视频观看| 亚洲免费视频播放| av动漫在线免费观看| 亚洲精品国产suv一区88| 久久综合亚洲精品| 国产精品裸体瑜伽视频| 成人免费毛片网| 日本三级免费观看| 黄色aaa级片| 一区二区在线免费看| 91热视频在线观看| 蜜桃传媒一区二区三区| 成人免费观看cn| 欧美 日韩精品| 午夜免费福利在线| 日韩视频在线观看一区二区三区| 日本一区二区免费高清视频| 中文字幕在线中文| 国产3p露脸普通话对白| 国产成人亚洲精品无码h在线| 91视频成人免费| 大西瓜av在线| 成人综合视频在线| 中文字幕第100页| 亚洲在线观看网站| 欧美 日韩 国产精品| 免费看国产曰批40分钟| 男人天堂成人在线| 亚洲精品免费一区亚洲精品免费精品一区 | 啊啊啊国产视频| 日本免费色视频| 男女爱爱视频网站| 久久亚洲精品无码va白人极品| 自拍日韩亚洲一区在线| 天天操天天摸天天爽| 一级片黄色免费| 国产自产在线视频| 99草草国产熟女视频在线| 国产免费中文字幕| 男女日批视频在线观看| 亚洲色图久久久| 欧美精品一区二区性色a+v| 免费无码毛片一区二三区| 视色视频在线观看| 国产一区二区三区在线免费| 亚洲色成人一区二区三区小说| 伊人影院综合在线| 久久久久久久9| 亚洲污视频在线观看| 波多野结衣av一区二区全免费观看| 久久9精品区-无套内射无码| 99久久久无码国产精品性色戒| 男女激情无遮挡| 国产精品探花在线播放| 国产特级黄色大片| 97精品国产97久久久久久粉红| 免费无码av片在线观看| 熟妇熟女乱妇乱女网站| 亚洲高清在线免费观看| 日产精品久久久久久久蜜臀| 我要看一级黄色大片| 国产a级片网站| 手机在线免费毛片| 熟女人妇 成熟妇女系列视频| 老司机午夜网站| 91极品尤物在线播放国产| 久久精品国产sm调教网站演员| 天堂网在线免费观看| 僵尸世界大战2 在线播放| 欧美视频亚洲图片| 一区二区xxx| www.中文字幕在线| 300部国产真实乱| 天天干天天玩天天操| 精品无码一区二区三区在线| 欧美 日韩 国产 在线观看| 四季av一区二区| 妞干网在线免费视频| 国产成人亚洲综合无码| 国产成人强伦免费视频网站| 国产又粗又长又大的视频| 国精产品一区一区三区视频| 日韩av福利在线观看| 天天干天天操天天玩| av观看免费在线| 久久亚洲中文字幕无码| 日韩中文字幕亚洲精品欧美| 天天干天天色天天干| av网站在线不卡| 亚洲综合在线网站| 动漫av网站免费观看| 久久久性生活视频| www.夜夜爱| 国产女主播av| 久久久久久av无码免费网站下载| 手机av在线网站| 一级黄色在线播放| 亚洲精品免费一区亚洲精品免费精品一区| 天天摸天天碰天天添| 国产午夜伦鲁鲁| 国产精品久久久久9999爆乳| 日韩视频一二三| 992tv成人免费观看| 最新视频 - x88av| 韩国黄色一级大片| 黄色a级三级三级三级| 欧美 另类 交| 亚洲第一精品区| 欧美日韩亚洲国产成人| 中文字幕日韩综合| 亚洲欧美日韩不卡| 大桥未久一区二区| 无码人妻精品一区二区三区99v| 国产大尺度在线观看| 大地资源网在线观看免费官网| 一个色综合久久| 欧洲在线免费视频| 熟女视频一区二区三区| 免费在线精品视频| 17c丨国产丨精品视频| 日韩中字在线观看| 中国丰满人妻videoshd| 精品中文字幕av| 国产精品拍拍拍| 亚洲精品mv在线观看| 亚洲男人天堂2021| 男女啪啪免费观看| 国产精品裸体瑜伽视频| 久草精品在线播放| 亚洲一区在线不卡| 亚洲制服在线观看| 成人免费观看在线| 国产深夜男女无套内射| 国产日韩一区二区在线观看| 蜜臀视频一区二区三区| 国产精品一区二区小说| 久久久国产精华液999999 | 欧美激情国产精品日韩| 久久国产精品国产精品| 国产一二三四五| 国产高清av在线播放| 黑森林精品导航| 免费观看中文字幕| 国产91在线视频观看| 亚洲欧美日本一区二区| 97在线国产视频| 国产精品天天av精麻传媒| 日韩视频在线免费播放|