¡¾×ª¡¿ÔÚJavaÖÐʹÓÃNIO½øÐÐÍøÂç±à³Ì
ÔÚJDKÖУ¬ÓÐÒ»¸ö·Ç³£ÓÐÒâ˼µÄ¿â£ºNIO£¨New I/O£©¡£Õâ¸ö¿âÖÐÓÐ3¸öÖØÒªµÄÀ࣬·Ö±ðÊÇjava.nio.channelsÖÐSelectorºÍChannel£¬ÒÔ¼°java.nioÖеÄBuffer¡£
±¾ÆªÎÄÕÂÎÒÃÇÊ×ÏÈÁ˽âÒ»ÏÂΪʲôÐèÒªNIOÀ´½øÐÐÍøÂç±à³Ì£¬È»ºó¿´¿´Ò»²½Ò»²½À´½²½âÈçºÎÔÚÍøÂç±à³ÌÖÐʹÓÃNIO¡£
ΪʲôÐèÒªNIO
ʹÓÃJava±àд¹ýSocket³ÌÐòµÄͬѧһ¶¨¶¼ÖªµÀSocketºÍSocketServer¡£µ±µ÷ÓÃij¸öµ÷ÓõÄʱºò£¬µ÷Óõĵط½¾Í»á×èÈû£¬µÈ´ýÏìÓ¦¡£ÕâÖÖ·½Ê½¶ÔÓÚС¹æÄ£µÄ³ÌÐò·Ç³£·½±ã£¬µ«ÊǶÔÓÚ´óÐ͵ijÌÐò¾ÍÓеãÁ¦²»´ÓÐÄÁË£¬µ±ÓдóÁ¿µÄÁ¬½ÓµÄʱºò£¬ÎÒÃÇ¿ÉÒÔΪÿһ¸öÁ¬½Ó½¨Á¢Ò»¸öÏß³ÌÀ´²Ù×÷¡£µ«ÊÇÕâÖÖ×ö·¨´øÀ´µÄȱÏÝÒ²ÊÇÏÔ¶øÒ×¼ûµÄ£º
Ó²¼þÄܹ»Ö§³Ö´óÁ¿µÄ²¢·¢¡£
²¢·¢µÄÊýÁ¿Ê¼ÖÕÓÐÒ»¸öÉÏÏÞ¡£
¸÷¸öÏß³ÌÖ®¼äµÄÓÅÏȼ¶²»ºÃ¿ØÖÆ¡£
¸÷¸öClientÖ®¼äµÄ½»»¥Óëͬ²½À§ÄÑ¡£
ÎÒÃÇÒ²¿ÉÒÔʹÓÃÒ»¸öÏß³ÌÀ´´¦ÀíËùÓеÄÇëÇó£¬Ê¹Óò»×èÈûµÄIO£¬ÂÖѯ²éѯËùÓеÄClient¡£ÕâÖÖ×ö·¨Í¬ÑùÒ²ÓÐȱÏÝ£ºÎÞ·¨Ñ¸ËÙÏìÓ¦Client¶Ë£¬Í¬Ê±»áÏûºÄ´óÁ¿ÂÖѯ²éѯµÄʱ¼ä¡£
ËùÒÔ£¬ÎÒÃÇÐèÒªÒ»ÖÖpollµÄģʽÀ´´¦ÀíÕâÖÖÇé¿ö£¬´Ó´óÁ¿µÄÍøÂçÁ¬½ÓÖÐÕÒ³öÀ´ÕæÕýÐèÒª·þÎñµÄClient¡£ÕâÕýÊÇNIOµ®ÉúµÄÔÒò£ºÌṩһÖÖPollµÄģʽ£¬ÔÚËùÓеÄClientÖÐÕÒµ½ÐèÒª·þÎñµÄClient¡£
»Øµ½ÎÒÃǸոÕ˵µ½µÄ3¸ö×î×îÖØÒªµÄClass£ºjava.nio.channelsÖÐSelectorºÍChannel£¬ÒÔ¼°java.nioÖеÄBuffer¡£
Channel´ú±íÒ»¸ö¿ÉÒÔ±»ÓÃÓÚPoll²Ù×÷µÄ¶ÔÏ󣨿ÉÒÔÊÇÎļþÁ÷Ò²¿ÉÒÔÊ¹ÍøÂçÁ÷£©£¬ChannelÄܹ»±»×¢²áµ½Ò»¸öSelectorÖС£Í¨¹ýµ÷ÓÃSelectorµÄselect·½·¨¿ÉÒÔ´ÓËùÓеÄChannelÖÐÕÒµ½ÐèÒª·þÎñµÄʵÀý£¨Accept£¬read ..£©¡£Buffer¶ÔÏóÌṩ¶ÁдÊý¾ÝµÄ»º´æ¡£Ïà¶ÔÓÚÎÒÃÇÊìϤµÄStream¶ÔÏó£¬BufferÌṩ¸üºÃµÄÐÔÄÜÒÔ¼°¸üºÃµÄ±à³Ì͸Ã÷ÐÔ£¨ÈËΪ¿ØÖÆ»º´æµÄ´óСÒÔ¼°¾ßÌåµÄ²Ù×÷£©¡£
ÅäºÏBufferʹÓÃChannel
Ó봫ͳģʽµÄ±à³Ì²»Óã¬Channel²»Ê¹ÓÃStream£¬¶øÊÇBuffer¡£ÎÒÃÇÀ´ÊµÏÖÒ»¸ö¼òµ¥µÄ·Ç×èÈûEcho Client£º
package com.cnblogs.gpcuster;
import java.net.InetSocketAddress;
import java.net.SocketException;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;
public class TCPEchoClientNonblocking {
public static void main(String args[]) throws Exception {
if ((args.length < 2) || (args.length > 3))// Testforcorrect#ofargs
throw new IllegalArgumentException(
"Param
Ïà¹ØÎĵµ£º
JavaÈÕ»ýÔÂÀÛ-1£ºJavaÖÐbooleanÀàÐ͵ÄλÔËËã
1. Ê×ÏȻعËÒ»ÏÂjavaÖеÄ8Öлù±¾ÀàÐͼ°Æä´æ´¢ËùÕ¼ÓõÄbitÊý¡£
ÀàÐÍ
bitÊý
byte
8
short
16
int
32
float
32
long
64
double
64
char
16
boolean
1
2. ÔٻعËÒ»ÏÂjavaµÄÔËËã·ûºÍÓÅÏȼ ......
³éÏóÀà(abstract class)£º
ÔÚclassǰ¼ÓÉÏabstractµÄÀà¾ÍÊdzéÏóÀ࣬È磺public abstract class A{};
ÓÃabstract¹Ø¼ü×ÖÀ´ÐÞÊÎÒ»¸öÀàʱ£¬Õâ¸öÀà½Ð×ö³éÏóÀࣻÓÃabstractÀ´ÐÞÊÎÒ»¸ö·½·¨Ê±£¬¸Ã·½·¨½Ð×ö³éÏó·½·¨(³éÏó·½·¨Ã»Óз½·¨Ìå)¡£
º¬ÓгéÏó·½·¨µÄÀà±ØÐë±»ÉùÃ÷Ϊ ......
Tiger ÖеÄÒ»¸öÖØÒªÐÂÌØÐÔÊÇö¾Ù¹¹Ô죬ËüÊÇÒ»ÖÖеÄÀàÐÍ£¬ÔÊÐíÓó£Á¿À´±íÊ¾ÌØ¶¨µÄÊý¾Ý Ƭ¶Ï£¬¶øÇÒÈ«²¿¶¼ÒÔÀàÐͰ²È«µÄÐÎʽÀ´±íʾ¡£Tiger ר¼Ò¡¢developerWorks µÄ¶à²ú×÷Õß Brett McLaughlin½«½âÊÍö¾ÙµÄ¶¨Ò壬½éÉÜÈçºÎÔÚÓ¦ÓóÌÐòÖÐÔËÓÃö¾Ù£¬ÒÔ¼°ËüΪʲôÄܹ»ÈÃÄúÅׯúËùÓоɵÄ
public static final ´úÂë¡£
& ......
ת×Ô £º http://hi.baidu.com/samuel_vong/blog/item/95471f7e2cdab33d0cd7dad1.html
/**
* ²úÉúËæ»ú×Ö·û´®
* */
private static Random randGen = null;
private static char[] numbersAndLetters = null;
private static Object initLock = new Object();
public static final Strin ......