java nioÔÚ¶àÏ̻߳·¾³ÏµĶñÃÎÖ®ÖÕ½á
ÓÐÈË˵java nioÔÚ¶àÏ̻߳·¾³Ï±à³Ì¼òÖ±¾ÍÊǸö¶ñÃÎ,ÆäʵÄãÈç¹ûÄܰÑÎÕסjava nio APIµÄÒªÁì,Äã¾Í¿ÉÒÔ½«Ö®¼ÝÔ¦.
0. Ò»¸ö channal ¶ÔÓ¦Ò»¸öSelectionKey in the same selector.
e.g:
SelectionKey sk=sc.register(selector, SelectionKey.OP_READ, handler);
sk==sc.register(selector, SelectionKey.OP_WRITE, handler) true?
selector.select() ÿ´Î·µ»ØµÄ¶ÔͬһchannalµÄskÊÇ·ñÏàͬ?
1.channel.register(...) may block if invoked concurrently with another registration[another.register(...)] or selection operation[selector.select(...)] involving *****the same selector*****.
Õâ¸öÊÇregister·½·¨jdk srcÉϵÄÔÎÄ,
e.g:
Èç¹ûÒ»¸öselection threadÒѾÔÚselect·½·¨Éϵȴýing,ÄÇôÕâ¸öʱºòÈç¹ûÓÐÁíÒ»ÌõÏ̵߳÷ÓÃchannal.register·½·¨µÄ»°,ÄÇôËü½«±»blocking.
2.selectionKey.cancel() : The key will be removed from all of the selector's key sets during *****the next selection operation[selector.select(...)]*****.
may block briefly if invoked concurrently with a cancellation[cancel()] or selection operation[select(...)] involving ***the same selector***.
Õâ¸öÒ²ÊÇcancel·½·¨jdk srcÉϵÄÔÎÄ,
e.g:
ÄãÏȽ«Ò»¸öselectionKey.cancel(),È»ºóËæ¼´ÔÙchannel.register to the same selector,
ÔÚcancelºÍregisterÖ®¼ä,Èç¹ûûÓÐÏß³Ì(°üÀ¨µ±Ç°Ïß³Ì)½øÐÐselect²Ù×÷µÄ»°,
ÄÇô throws java.nio.channels.CancelledKeyException.
ËùÒÔ cancel-->select-->re-register.
3.if don't remove the current selectedKey from selector.selectedKeys()[Set] ½«µ¼Ö selector.select(...) not block [may be cpu 100%,specially when client cut the current channel(connection)].
e.g:
Iterator<SelectionKey> it=selector.selectedKeys().iterator();
...for/while it.hasNext()...
it.remove();<------*****must do it. or Keys' Set.clear() finally;
if remove the current selectedKey from selector.selectedKeys()[Set] but don't sk.interestOps(sk.interestOps()& (~sk.readyOps()));½«µ¼Ö selector.select(...) not block [select() not block several times, or excepted exception]
4.op_write should not be registered to the selector. &nbs
Ïà¹ØÎĵµ£º
JDKµÄ°²×°Â·¾¶
-------------
±äÁ¿Ãû JAVA_HOME
±äÁ¿ÖµÊ¾Àý D:\Program Files\Java\jdk1.6.0;
ËÑË÷ÀàµÄĿ¼
------------
±äÁ¿Ãû CLASSPATH
±äÁ¿ÖµÊ¾Àý D:\Program Files\Java\jdk1.6.0\lib\tools.jar;
D:\Program Files\Java\jdk1.6.0\lib\dt.jar;
JdkµÄbinĿ¼
------------
±äÁ¿Ãû PATH(Ò ......
JAVAËÄÖÖ»ù±¾ÅÅÐò,°üÀ¨Ã°ÅÝ·¨,²åÈë·¨,Ñ¡Ôñ·¨,SHELLÅÅÐò·¨.ÆäÖÐÑ¡Ôñ·¨ÊÇðÅÝ·¨µÄ¸Ä½ø,SHELLÅÅÐò·¨ÊÇ ²åÈë·¨µÄ¸Ä½ø.ËùÒÔ´Ó¸ù±¾ÉÏÀ´Ëµ¿ÉÒÔ¹éÄÉΪÁ½ÖÖ²»Í¬µÄÅÅÐò·½·¨:¼´:²åÈë·¨£¦Ã°ÅÝ·¨
Ò» ²åÈë·¨:±éÀúÅÅÐò¼¯ºÏ£¬Ã¿µ½Ò»¸öÔªËØÊ±£¬¶¼Òª½«Õâ¸öÔªËØÓëËùÓÐËü֮ǰµÄÔªËØ±éÀú±È½ÏÒ»±é£¬È÷ûºÏÅÅÐò˳ÐòµÄÔªËØ°¤¸öÒÆ¶¯µ½µ±Ç°·¶Î§ÄÚËü×î ......
ÏÂÃæÕâ¶Î´úÂëÊǾ¹ý´úÂë·ÖÎö¹¤¾ßRational Software Analyser ·ÖÎö¹ýµÄ£¬¸Ã¹¤¾ß¹ØÓÚJavaµÄ¹æÔòĿǰÊÇ541Ìõ£¬ÊµÊô¿Á¿Ì¡£Ð´¶Î¹æ·¶µãµÄJava´úÂëÈÝÒ×ô£¡
/**
*
* @author zhp
*
* @version 1.0
*/
package com.rsar;
import java.util.Date;
/**
*
* @author zhp
  ......
JavaÐéÄâ»ú²ÎÊý·ÖΪ»ù±¾²ÎÊýºÍÀ©Õ¹²ÎÊý£¬±¾ÎÄÖ÷ÒªÏêϸ½éÉÜ»ù±¾²ÎÊýÖи÷¸ö²ÎÊýµÄÒâÒåÒÔ¼°ÆäÓ÷¨¡£
Òª²é¿´JavaÐéÄâ»úÓÐÄÄЩ¿ÉÑ¡µÄ²ÎÊýÅäÖ㬿ÉÒÔÖ±½ÓÔËÐÐjavaÃüÁÏÔʾÈçÏÂЧ¹û£º
ϱ߷ֱð½éÉÜÿ¸ö²ÎÊýµÄÓ÷¨£º
1. -client£¬-server
ÕâÁ½¸ö²ÎÊýÓÃÓÚÉèÖÃÐéÄâ»úʹÓúÎÖÖÔËÐÐģʽ£¬clientģʽÆô¶¯±È½Ï¿ì£¬µ«ÔËÐÐʱÐÔÄܺÍÄÚ´ ......