JavaTM 2 Platform
Standard Ed. 5.0

ÆÐÅ°Áö java.nio.channels

ÀÔÃâ·Â Á¶ÀÛÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â ¿£Æ¼Æ¼ (ÆÄÀÏ, ¼ÒÄϵî)¿¡ÀÇ Á¢¼ÓÀ» ³ªÅ¸³»´Â ä³ÎÀ̳ª, ´ÙÁßÈ­ µÈ ºñºí·Ï ÀÔÃâ·Â Á¶ÀÛ¿ëÀÇ ¼¿·ºÅ͸¦ Á¤ÀÇÇÕ´Ï´Ù.

ÂüÁ¶Ã³:
          ¼³¸í

ÀÎÅÍÆäÀ̽º °³¿ä
ByteChannel ¹ÙÀÌÆ®ÀÇ read¿Í write¸¦ ÇÒ ¼ö Àִ ä³ÎÀÔ´Ï´Ù.
Channel ÀÔÃâ·Â Á¶ÀÛ¿¡ °ü°èµÈ ä³ÎÀÔ´Ï´Ù.
GatheringByteChannel ¹öÆÛ ¼ø¼­·ÎºÎÅÍ ¹ÙÀÌÆ®¸¦ Ãâ·ÂÇÒ ¼ö Àִ ä³ÎÀÔ´Ï´Ù.
InterruptibleChannel ºñµ¿±âÀÇ Å¬·Î¿ìÁ ÀÎÅÍ·´Æ®°¡ °¡´ÉÇÑ Ã¤³ÎÀÔ´Ï´Ù.
ReadableByteChannel ¹ÙÀÌÆ®¸¦ Àо ¼ö Àִ ä³ÎÀÔ´Ï´Ù.
ScatteringByteChannel ¹öÆÛ ¼ø¼­¿¡ ¹ÙÀÌÆ®¸¦ ÀоîµéÀÏ ¼ö Àִ ä³ÎÀÔ´Ï´Ù.
WritableByteChannel ¹ÙÀÌÆ®¸¦ Ãâ·ÂÇÒ ¼ö Àִ ä³ÎÀÔ´Ï´Ù.
 

Ŭ·¡½º °³¿ä
Channels ä³Î°ú ½ºÆ®¸²À» À§ÇÑ À¯Æ¿¸®Æ¼ ¸Þ¼­µåÀÔ´Ï´Ù.
DatagramChannel µ¥ÀÌÅÍ ±×·¥Çü ¼ÒÄÏÀÇ ¼±Åà °¡´ÉÇÑ Ã¤³ÎÀÔ´Ï´Ù.
FileChannel ÆÄÀÏÀÇ Àбâ, Ãâ·ÂÇØ, ¸ÅÇÎ, Á¶ÀÛ¿ë ä³ÎÀÔ´Ï´Ù.
FileChannel.MapMode ÆÄÀÏ ¸ÅÇιæ½ÄÀÇ ÇüÅ º¸ÁõµÈ ¿­°ÅÀÔ´Ï´Ù.
FileLock ÆÄÀÏ ¿µ¿ª»óÀÇ ¶ôÀ» ³ªÅ¸³»´Â ÅäÅ«ÀÔ´Ï´Ù.
Pipe ´Ü¹æÇâ ÆÄÀÌÇÁ¸¦ ±¸ÇöÇÏ´Â 1Á¶ÀÇ Ã¤³ÎÀÔ´Ï´Ù.
Pipe.SinkChannel Pipe Ãâ·ÂÃøÀ» ³ªÅ¸³»´Â ä³ÎÀÔ´Ï´Ù.
Pipe.SourceChannel Pipe readÃøÀ» ³ªÅ¸³»´Â ä³ÎÀÔ´Ï´Ù.
SelectableChannel Selector °æÀ¯·Î ´ÙÁßÈ­ÇÒ ¼ö Àִ ä³ÎÀÔ´Ï´Ù.
SelectionKey SelectableChannel °¡ Selector¿¡ µî·ÏµÇ¾î ÀÖ´Â °ÍÀ» ³ªÅ¸³»´Â ÅäÅ«ÀÔ´Ï´Ù.
Selector SelectableChannel °´Ã¼ÀÇ ¸ÖƼÇ÷º¼­ÀÔ´Ï´Ù.
ServerSocketChannel ½ºÆ®¸²Çü ¸®½º´×¼ÒÄÏÆ®¿ëÀÇ ¼±Åà °¡´ÉÇÑ Ã¤³ÎÀÔ´Ï´Ù.
SocketChannel ½ºÆ®¸²Çü Á¢¼Ó ¼ÒÄÏ¿ëÀÇ ¼±Åà °¡´É ä³ÎÀÔ´Ï´Ù.
 

¿¹¿Ü °³¿ä
AlreadyConnectedException ÀÌ¹Ì Á¢¼ÓµÇ°í ÀÖ´Â SocketChannel ¿¡ÀÇ Á¢¼ÓÀ» ½ÃµµÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
AsynchronousCloseException ´Ù¸¥ thread°¡ ä³Î ¶Ç´Â ÀÔÃâ·Â Á¶À۽ÿ¡ ºí·Ï µÇ´Â ä³ÎÀÇ ÀϺθ¦ Ŭ·Î¿ìÁî ÇßÀ» ¶§¿¡ thread°¡ ¹Þ´Â üũ ¿¹¿ÜÀÔ´Ï´Ù.
CancelledKeyException ÀÌ¹Ì ¹«È¿°¡ µÈ ¼±Åà ۸¦ »ç¿ëÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
ClosedByInterruptException thread°¡ ä³Î¿¡¼­ÀÇ ÀÔÃâ·Â Á¶ÀÛÀ¸·Î ºí·Ï µÇ°í ÀÖ´Â °Í¿¡µµ ºÒ±¸ÇÏ°í, ´Ù¸¥ thread·ÎºÎÅÍ ÀÎÅÍ·´Æ®¸¦ ¹Þ¾ÒÀ» °æ¿ì¿¡ ¼ö½ÅÇϴ üũ ¿¹¿ÜÀÔ´Ï´Ù.
ClosedChannelException Ŭ·Î¿ìÁî ÇÑ Ã¤³Î¿¡ ´ëÇÑ ÀÔÃâ·Â Á¶ÀÛÀ» ½Ç½ÃÇÏ·Á°í ÇßÀ» ¶§, ¶Ç´Â ½ÇÇàÇÏ·Á°í ÇÑ ÀÔÃâ·Â Á¶ÀÛ¿¡ ´ëÇؼ­ ±× ä³ÎÀÌ Å¬·Î¿ìÁî µÇ°í ÀÖ´Â °æ¿ì¿¡ ¹ß»ýµÇ´Â üũ ¿¹¿ÜÀÔ´Ï´Ù.
ClosedSelectorException Ŭ·Î¿ìÁî ÇÑ ¼¿·ºÅÍ¿¡ ´ëÇÑ ÀÔÃâ·Â Á¶ÀÛÀ» È£ÃâÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
ConnectionPendingException ºñºí·Ï Á¢¼Ó Á¶ÀÛÀÇ ÁøÇàÁß¿¡ SocketChannel¿¡ Á¢¼ÓÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
FileLockInterruptionException ÆÄÀÏ ¶ôÀÇ È¹µæÀ» ´ë±âÇÏ°í ÀÖ´Â thread¿¡ ´ëÇؼ­ ´Ù¸¥ thread·ÎºÎÅÍ ÀÎÅÍ·´Æ®°¡ ÀÖ¾úÀ» ¶§¿¡ ¼öÃëµÇ´Â üũ ¿¹¿ÜÀÔ´Ï´Ù.
IllegalBlockingModeException ºí·Ï ¸ðµå°¡ ºÎÁ¤ÇØ¿ä¿¡ ä³Î»ó¿¡¼­ ºí·Ï ¸ðµå °íÀ¯ÀÇ Á¶ÀÛÀ» È£ÃâÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
IllegalSelectorException ä³ÎÀÇ ¼Ò½ºÇÁ·Î¹ÙÀÌ´õ ÀÌ¿Ü°¡ ÀÛ¼ºÇÑ ¼¿·ºÅÍ¿¡ ä³ÎÀ» µî·ÏÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
NoConnectionPendingException SocketChannel connect ¸Þ¼­µåÀÇ È£ÃâÀÌ ¾ÆÁ÷ ¿Ï·áÇÏ°í ÀÖÁö ¾Ê´Âµ¥, finishConnect ¸Þ¼­µå¸¦ È£ÃâÇßÀ» °æ¿ì¿¡ ¹ß»ýµÇ´Â ¹ÌÈ®ÀÎÀÇ ¿¹¿ÜÀÔ´Ï´Ù.
NonReadableChannelException óÀ½Àº ÀÐÀ» À§ÇØ ¿ÀǵǾî ÀÖÁö ¾Ê¾Ò´ø ä³Î·ÎºÎÅÍ read¸¦ ½Ç½ÃÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
NonWritableChannelException óÀ½Àº write¸¦ À§Çؼ­ ¿ÀǵǾî ÀÖÁö ¾Ê¾Ò´ø ä³Î¿¡ ´ëÇؼ­ write¸¦ ½Ç½ÃÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
NotYetBoundException ¹Ì¹ÙÀεåÀÇ ¼­¹ö ¼ÒÄÏ Ã¤³Î»ó¿¡¼­ ÀÔÃâ·Â Á¶ÀÛÀ» È£ÃâÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
NotYetConnectedException ¹ÌÁ¢¼ÓÀÇ ¼ÒÄÏ Ã¤³Î»ó¿¡¼­ ÀÔÃâ·Â Á¶ÀÛÀ» È£ÃâÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
OverlappingFileLockException ¶ôÀ» ȹµæÇÏ·Á°í ÇÑ ÆÄÀÏ ¿µ¿ªÀÌ, ÀÌ¹Ì °°Àº Java °¡»ó ¸Ó½Å¿¡ ÀÇÇØ ¶ô µÇ°í ÀÖ´Â ¿µ¿ª¿¡ ¿À¹ö·¦ ÇÏ°í ÀÖ´Â °æ¿ì, ¶Ç´Â ±× ¿ÜÀÇ thread°¡ °°Àº ÆÄÀÏÀÇ ¿À¹ö·¦ ÇÏ°í ÀÖ´Â ¿µ¿ªÀ» Àá±×·Á°í ´ë±âÇÏ°í ÀÖ´Â °æ¿ì¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
UnresolvedAddressException ¹ÌÇØ°áÀÇ ¼ÒÄÏ ÁÖ¼Ò¿¡ ´ëÇؼ­ ³×Æ®¿öÅ© Á¶ÀÛÀ» È£ÃâÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
UnsupportedAddressTypeException Áö¿ø µÇ¾î ÀÖÁö ¾ÊÀº ÇüÅÂÀÇ ¼ÒÄÏ ÁÖ¼Ò¿¡ ¹ÙÀÎµå ¶Ç´Â Á¢¼ÓÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â üũµÇÁö ¾Ê´Â ¿¹¿ÜÀÔ´Ï´Ù.
 

ÆÐÅ°Áö java.nio.channels ¼³¸í

ÀÔÃâ·Â Á¶ÀÛÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â ¿£Æ¼Æ¼ (ÆÄÀÏ, ¼ÒÄϵî)¿¡ÀÇ Á¢¼ÓÀ» ³ªÅ¸³»´Â ä³ÎÀ̳ª, ´ÙÁßÈ­ µÈ ºñºí·Ï ÀÔÃâ·Â Á¶ÀÛ¿ëÀÇ ¼¿·ºÅ͸¦ Á¤ÀÇÇÕ´Ï´Ù.

ä³Î

¼³¸í

Channel ÀÔÃâ·Â Á¶ÀÛÀ» ÇÏ´Â Àå¼Ò
  ReadableByteChannel ¹öÆÛ¿¡ÀÇ read¸¦ ½Ç½ÃÇÏ´Â
    ScatteringByteChannel    ¹öÆÛ ¼ø¼­¿¡ÀÇ read¸¦ ½Ç½ÃÇÏ´Â
  WritableByteChannel ¹öÆ۷κÎÅÍÀÇ ¼­µÎ¸¦ ½Ç½ÃÇÏ´Â
    GatheringByteChannel ¹öÆÛ ¼ø¼­·ÎºÎÅÍÀÇ ¼­µÎ¸¦ ½Ç½ÃÇÏ´Â
  ByteChannel ¹öÆÛ¿¡ÀÇ Àбâ, ¹öÆ۷κÎÅÍÀÇ ¼­µÎ¸¦ ½Ç½ÃÇÏ´Â
Channels ä³Î°ú ½ºÆ®¸²ÀÇ Á¦ÈÞ¸¦ À§ÇÑ À¯Æ¿¸®Æ¼ ¸Þ¼­µå

¡¸Ã¤³Î¡¹Àº 1°³ ÀÌ»óÀÇ ÀÔÃâ·Â Á¶ÀÛ (Àбâ, Ãâ·Âµî)À» ½ÇÇàÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î µð¹ÙÀ̽º, ÆÄÀÏ, ³×Æ®¿öÅ© ¼ÒÄÏ, ÇÁ·Î±×·¥ ÄÄÆÛ³ÍÆ®µîÀÇ ¿£Æ¼Æ¼¿¡ÀÇ ¿ÀÇ Á¢¼ÓÀ» ³ªÅ¸³À´Ï´Ù. Channel ÀÎÅÍÆäÀ̽º·Î °¡¸®Å°´Â ´ë·Î ä³ÎÀº ¿ÀÇÂÈ­ Ŭ·Î¿ìÁîÀÇ ¸ÓÁö¾Ê¾ÆÀΰ¡ÀÔ´Ï´Ù. ¾î´À ÂÊ »óÅÂÀÇ Ã¤³Îµµ, ¡¸ºñµ¿±â Ŭ·Î¿ìÁî °¡´É¡¹ÇÑÆí ¡¸ÀÎÅÍ·´Æ® °¡´É¡¹ÀÔ´Ï´Ù.

Channel l ÀÎÅÍÆäÀ̽º´Â »õ·Î¿î ÀÔÃâ·Â Á¶ÀÛÀ» ÁöÁ¤ÇÏ´Â º¹¼ö¿ÜÀÇ ÀÎÅÍÆäÀ̽º¿¡ ÀÇÇØ È®ÀåµÇ°í ÀÖ½À´Ï´Ù.

ReadableByteChannel ÀÎÅÍÆäÀ̽º´Â ä³Î·ÎºÎÅÍ ¹öÆÛ¿¡ ¹ÙÀÌÆ®¸¦ ÀоîµéÀÌ´Â read ¸Þ¼­µå¸¦ ÁöÁ¤ÇÕ´Ï´Ù. °°ÀÌWritableByteChannel ÀÎÅÍÆäÀ̽º´Â ¹öÆ۷κÎÅÍ Ã¤³Î¿¡ ¹ÙÀÌÆ®¸¦ ½á³»´Â write ¸Þ¼­µå¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ByteChannel ÀÎÅÍÆäÀ̽º´Â À̰͵é 2°³ÀÇ ÀÎÅÍÆäÀ̽º¸¦ ÅëÀÏÇÑ ÀÎÅÍÆäÀ̽ºÀ̸ç, ¹ÙÀÌÆ®ÀÇ read¿Í ¼­µÎÀÇ ¾çÂÊ ¸ðµÎ¸¦ ½ÇÇàÇÒ ¼ö ÀÖ´Â ÀϹÝÀûÀΠä³Î·Î »ç¿ëµË´Ï´Ù.

ScatteringByteChannel ÀÎÅÍÆäÀ̽º¿Í GatheringByteChannel ÀÎÅÍÆäÀ̽º´Â °¢°¢ ReadableByteChannel ÀÎÅÍÆäÀ̽º ¹× WritableByteChannel ÀÎÅÍÆäÀ̽º¸¦ È®ÀåÇÑ °ÍÀ¸·Î °¢°¢, ´ÜÀÏÀÇ ¹öÆÛ°¡ ¾Æ´Ï°í º¹¼öÀÇ ¹öÆÛÀÇ ¼ø¼­¸¦ »ç¿ëÇÏ´Â read ¸Þ¼­µå ¹× write ¸Þ¼­µå¸¦ Ãß°¡ÇÏ°í ÀÖ½À´Ï´Ù.

Channels À¯Æ¿¸®Æ¼ Ŭ·¡½º´Â java.io ÆÐÅ°ÁöÀÇ ½ºÆ®¸² Ŭ·¡½º¿Í ÀÌ ÆÐÅ°ÁöÀÇ Ã¤³Î Ŭ·¡½ºÀÇ Á¦ÈÞ¸¦ Áö¿øÇÏ´Â static ¸Þ¼­µå¸¦ Á¤ÀÇÇÕ´Ï´Ù. ÀûÀýÇÑ Ã¤³ÎÀ» InputStream ¶Ç´Â OutputStream ·ÎºÎÅÍ ±¸ÃàÇÒ ¼ö ÀÖ½À´Ï´Ù . ¹Ý´ë·ÎInputStream ¶Ç´Â OutputStream¸¦ ä³Î·ÎºÎÅÍ ±¸ÃàÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Reader ´Â ÁöÁ¤µÈ ij¸¯Åͼ¸¦ »ç¿ëÇØ ÁöÁ¤µÈ read °¡´É ¹ÙÀÌÆ® ä³ÎÀÇ ¹ÙÀÌÆ®¸¦ µðÄÚµåÇϵµ·Ï ±¸ÃàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÑÆí, Writer ij½¬´Â ÁöÁ¤µÈ ij¸¯Åͼ¸¦ »ç¿ëÇØ ¹®ÀÚ¸¦ ¹ÙÀÌÆ®¿¡ encode ÇØ, ÁöÁ¤µÈ Ãâ·Â °¡´É ¹ÙÀÌÆ® ä³Î¿¡ Ãâ·ÂÇϵµ·Ï ±¸ÃàÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÆÄÀÏ Ã¤³Î

¼³¸í

FileChannel ÆÄÀÏÀÇ Àбâ, Ãâ·ÂÇØ, ¸ÅÇÎ, Á¶ÀÛ
FileLock ÆÄÀÏÀÇ (¿µ¿ªÀÇ) ¶ô
MappedByteBuffer    ÆÄÀÏ ¿µ¿ª¿¡ ¸ÅÇÎ µÇ´Â ´ÙÀÌ·ºÆ® byte ¹öÆÛ

FileChannel Ŭ·¡½º´Â ÆÄÀÏ¿¡ Á¢¼ÓµÈ ä³Î·ÎºÎÅÍÀÇ ¹ÙÀÌÆ®ÀÇ Àбâ, ÆÄÀÏ¿¡ Á¢¼ÓµÈ ä³Î¿¡ÀÇ ¹ÙÀÌÆ®ÀÇ Ãâ·ÂÀ̶ó°í ÇÑ ÀϹÝÀûÀÎ Á¶ÀÛ¿Ü, ÇöÀçÀÇ ÆÄÀÏ À§Ä¡ÀÇ Á¶È¸¶ó°í º¯°æ, ÆÄÀÏ ¸»¹ÌÀÇ Àß¶ó¼­ ¹ö¸²¿¡ ÇÑ Æ¯Á¤ »çÀÌÁî¿¡ÀÇ º¯°æÀ» Áö¿ø ÇÕ´Ï´Ù. ÀÌ Å¬·¡½º´Â ÆÄÀÏ Àüü ¶Ç´Â ÆÄÀϳ»ÀÇ Æ¯Á¤ÀÇ ¿µ¿ªÀÇ ¶ôÀ» ȹµæÇÏ´Â ¸Þ¼­µå¸¦ Á¤ÀÇÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼­µå´Â FileLock Ŭ·¡½ºÀÇ ÀνºÅϽº¸¦ ¸®ÅÏÇÕ´Ï´Ù. °Ô´Ù°¡FileChannel Ŭ·¡½º´Â ÆÄÀÏÀÇ °»½Å ³»¿ëÀ» ±× ÆÄÀÏÀÌ Æ÷ÇԵǰí ÀÖ´Â ±â¾ïÀåÄ¡¿¡ °­Á¦ÀûÀ¸·Î Ãâ·ÂÇÏ´Â ¸Þ¼­µå³ª, ÆÄÀÏ°ú ±× ¿ÜÀÇ Ã¤³Î°£¿¡ È¿À²ÀûÀ¸·Î ¹ÙÀÌÆ®¸¦ Àü¼Û ÇÏ´Â ¸Þ¼­µå³ª, ÆÄÀÏÀÇ ¿µ¿ªÀ» ¸Þ¸ð¸®¿¡ Á÷Á¢ ¸ÅÇÎ ÇÏ´Â ¸Þ¼­µå¸¦ Á¤ÀÇÇÕ´Ï´Ù. ÀÌ ¸¶Áö¸· Á¶ÀÛÀ» À§Çؼ­ ÀνºÅϽº¸¦ ÀÛ¼ºÇÏ´Â MappedByteBuffer Ŭ·¡½º´Â ¸î°³ÀÇ ÆÄÀÏ °ü·Ã Á¶ÀÛÀ» °®Ãá ByteBuffer Ŭ·¡½º¸¦ È®ÀåÇÑ °ÍÀÔ´Ï´Ù.

java.io ÆÐÅ°ÁöÀÇ FileInputStream Ŭ·¡½º, FileOutputStream Ŭ·¡½º ¹× RandomAccessFile Ŭ·¡½º¿¡ °¢°¢ getChannel ¸Þ¼­µå°¡ Ãß°¡µÇ¾ú½À´Ï´Ù. ÀÌ·¯ÇÑ ÃÄ ¸î°³ÀÇ Å¬·¡½ºÀÇ ÀνºÅϽº¿¡ ´ëÇؼ­ ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇϸé, ±âÃÊ¿¡ ÀÖ´Â ÆÄÀÏ¿¡ Á¢¼ÓµÈ ÆÄÀÏ Ã¤³ÎÀÌ ¸®Åϵ˴ϴ٠.

´ÙÁßÈ­ µÈ ºñºí·Ï ÀÔÃâ·Â

¼³¸í

SelectableChannel ´ÙÁßÈ­°¡ °¡´ÉÇÑ Ã¤³Î
  DatagramChannel java.net.DatagramSocket ¿ëÀÇ Ã¤³Î
  Pipe.SinkChannel ÆÄÀÌÇÁÀÇ Ãâ·ÂÃø
  Pipe.SourceChannel ÆÄÀÌÇÁÀÇ readÃø
  ServerSocketChannel    java.net.ServerSocket ¿ëÀÇ Ã¤³Î
  SocketChannel java.net.Socket ¿ëÀÇ Ã¤³Î
Selector ¼±Åà °¡´ÉÇÑ Ã¤³ÎÀÇ ¸ÖƼÇ÷º¼­
SelectionKey ¼¿·ºÅÍ¿¡ÀÇ Ã¤³ÎÀÇ µî·ÏÀ» ³ªÅ¸³»´Â ÅäÅ«
Pipe ´Ü¹æÇâ ÆÄÀÌÇÁ¸¦ Çü¼ºÇÏ´Â 2°³ÀÇ Ã¤³Î

¡¸¼¿·ºÅÍ¡¹, ¡¸¼±Åà °¡´É ä³Î¡¹ ¹× ¡¸¼±Åà Ű¡¹¿¡ ÀÇÇØ Á¦°øµÇ´Â ´ÙÁßÈ­ µÈ ºñºí·Ï ÀÔÃâ·ÂÀº thread ÁöÇâÀÇ ºí·Ï ÀÔÃâ·Âº¸´Ù ½ºÄÉÀ̶óºÒÀÔ´Ï´Ù.

¼¿·ºÅʹ¼±Åà °¡´É ä³ÎÀÇ ¸ÖƼÇ÷º¼­ÀÔ´Ï´Ù. ¼±Åà °¡´É ä³ÎÀº, ºñºí·Ï ¸ðµå·Î ºÐ·ùµÇ´Â Ư¼öÇÑ Ã¤³ÎÀ̱⵵ ÇÕ´Ï´Ù. ´ÙÁßÈ­ µÈ ÀÔÃâ·Â Á¶ÀÛÀ» ½ÇÇàÇÏ°í ½ÍÀº °æ¿ì´Â ¿ì¼± ¼±Åà °¡´É ä³ÎÀ» 1°³ ÀÌ»ó ÀÛ¼ºÇÕ´Ï´Ù. ´ÙÀ½¿¡ ÀÌ°ÍÀ» ºñºí·Ï ¸ðµå·Î ÇØ, ¼¿·ºÅÍ¿¡µî·Ï ÇÕ´Ï´Ù. ä³ÎÀ» µî·ÏÇÒ ¶§´Â »ç¿ë °¡´ÉÇÑ°¡ ¾î¶²°¡¸¦ ¼¿·ºÅÍ°¡ Å×½ºÆ®ÇÏ´Â ÀÏ·ÃÀÇ ÀÔÃâ·Â Á¶ÀÛÀ» ÁöÁ¤ÇÕ´Ï´Ù. ¼¿·ºÅÍ´Â µî·ÏÀ» ³ªÅ¸³»´Â¼±Åà ۸¦ ¸®ÅÏÇÕ´Ï´Ù.

¼¿·ºÅÍ¿¡ ä³ÎÀ» µî·ÏÇϸé, ¹üÀ§°¡ ¹Ì¸® ¼±¾ðµÇ°í ÀÖ´Â 1°³ ÀÌ»óÀÇ Á¶ÀÛÀÇ ½ÇÇàÀÌ °¡´ÉÇÏ°Ô µÈ ä³ÎÀ» °ËÃâÇϱâ À§ÇØ, ¼±Åà Á¶ÀÛÀ» ½ÇÇàÇÕ´Ï´Ù. ä³ÎÀÇ Áغñ°¡ µÇ¾î ÀÖÀ¸¸é, µî·Ï½Ã¿¡ ¸®ÅÏµÈ Å°°¡ ¼¿·ºÅÍÀÇ ¡¸¼±Åà Ű ¼¼Æ®¡¹¿¡ Ãß°¡µË´Ï´Ù. ÀÌ Å° ¼¼Æ®¿Í ÀÌ ¼¼Æ®¿¡ Æ÷ÇԵǴ Ű¸¦ Á¶»çÇÏ´Â °ÍÀ¸·Î °¢ ä³ÎÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â Á¶ÀÛÀ» ÆÇ´ÜÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿ä±¸µÈ ÀÔÃâ·Â Á¶ÀÛÀ» ½ÇÇàÇϱâ À§ÇØ, °¢ Å°·ÎºÎÅÍ ´ëÀÀÇϴ ä³ÎÀ» ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù.

¼±Åà Ű´Â ±× ä³ÎÀÌ ÀÖ´Â Á¶ÀÛÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â »óÅ°¡ µÇ¾î ÀÖ´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. ´Ù¸¸, ÀÌ°ÍÀº ´Ü¼øÇÑ ÈùÆ®À̸ç, thread°¡ ºí·Ï µÇ´Â ÀÏ ¾øÀÌ ±× Á¶ÀÛÀ» ½ÇÇàÇÒ ¼ö ÀÖ´Â °ÍÀ» º¸ÁõÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ´ÙÁßÈ­ ÀÔÃâ·Â 󸮸¦ ½ÇÇàÇÏ´Â ÄÚµå´Â ÈùÆ®ÀÇ ³»¿ëÀÌ À߸øµÇ¾î ÀÖÀ¸¸é ÆǸíµÇ¾úÀ» °æ¿ì¿¡ ±× ÈùÆ®¸¦ ¹«½ÃÇϵµ·Ï ±â¼úÇØ ÁÖ¼¼¿ä.

ÀÌ ÆÐÅ°Áö´Â java.net ÆÐÅ°Áö·Î Á¤Àǵǰí ÀÖ´Â DatagramSocket Ŭ·¡½º, ServerSocket Ŭ·¡½º ¹× Socket Ŭ·¡½º¿¡ ´ëÀÀÇÏ´Â ¼±Åà °¡´É ä³Î Ŭ·¡½º¸¦ Á¤ÀÇÇÕ´Ï´Ù. ÀÌ·¯ÇÑ Å¬·¡½º¿¡´Â ä³Î¿¡ °ü·ÃµÈ ¼ÒÄÏÀ» Áö¿ø ÇÒ ¼ö ÀÖµµ·Ï, ¼Ò±Ô¸ðÀÇ º¯°æÀÌ ´õÇØÁ³½À´Ï´Ù. ÀÌ ÆÐÅ°Áö´Â ´Ü¹æÇâ ÆÄÀÌÇÁ¸¦ ±¸ÇöÇÏ´Â ´Ü¼øÇÑ Å¬·¡½ºµµ Á¤ÀÇÇÕ´Ï´Ù. ¾î´À °æ¿ì¿¡µµ, »õ·Î¿î ¼±Åà °¡´É ä³ÎÀ» ÀÛ¼ºÇÏ·Á¸é, ´ëÀÀÇϴ Ŭ·¡½ºÀÇ open ¶ó°í ÇÏ´Â static ¸Þ¼­µå¸¦ È£ÃâÇÕ´Ï´Ù. ä³ÎÀÌ °ü·Ã ¼ÒÄÏÀ» ÇÊ¿ä·Î ÇÏ°í ÀÖ´Â °æ¿ì´Â ÀÌ Á¶ÀÛÀÇ ºÎÀÛ¿ëÀ¸·Î¼­ ¼ÒÄÏÀÌ ÀÛ¼ºµË´Ï´Ù.

¼¿·ºÅÍ, ¼±Åà °¡´É ä³Î, ¼±Åà ŰÀÇ ±¸ÇöÀ» ¿Å°Ü³õ°í ½ÍÀº °æ¿ì´Â java.nio.channels.spi ÆÐÅ°Áö·Î Á¤Àǵǰí ÀÖ´Â SelectorProvider Ŭ·¡½ºÀÇ ´ëü Á¤ÀÇ ¶Ç´Â ÀνºÅϽº¸¦ ¡¸Ç÷¯±× ÀΡ¹ÇÕ´Ï´Ù. ´Ù¸¸, ÀÌ ±â´ÉÀº ¸ðµç °³¹ßÀÚ¸¦ ´ë»óÀ¸·Î ÇÑ ±â´ÉÀÌ ¾Æ´Õ´Ï´Ù. ÀÌ°ÍÀº ¸Å¿ì ³ôÀº ¼º´ÉÀÌ ¿ä±¸µÇ´Â °æ¿ì¿¡ OS °íÀ¯ÀÇ ÀÔÃâ·Â ´ÙÁßÈ­ ¸ÞÄ«´ÏÁòÀ» È°¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â »ó±Þ »ç¿ëÀÚ Àü¿ë ±â´ÉÀÔ´Ï´Ù.

´ÙÁßÈ­ ÀÔÃâ·ÂÀÇ Ãß»óÀ» ±¸ÇöÇϱâ À§Çؼ­ ÇÊ¿äÇÏ°Ô µÇ´Â µî·Ï ¹× µ¿±â ó¸®ÀÇ ´ëºÎºÐÀº, java.nio.channels.spi ÆÐÅ°Áö AbstractInterruptibleChannel Ŭ·¡½º, AbstractSelectableChannel Ŭ·¡½º, AbstractSelectionKey Ŭ·¡½º ¹× AbstractSelector Ŭ·¡½º¿¡ ÀÇÇØ ½ÇÇàµË´Ï´Ù. Ä¿½ºÅÒ ¼¿·ºÅÍ ÇÁ·Î¹ÙÀÌ´õ¸¦ Á¤ÀÇÇÒ ¶§´Â AbstractSelector Ŭ·¡½º¿Í AbstractSelectionKey Ŭ·¡½º¸¸À» Á÷Á¢ »ó¼ÓÇÕ´Ï´Ù. Ä¿½ºÅÒ Ã¤³Î Ŭ·¡½º´Â ÀÌ ÆÐÅ°Áö·Î Á¤Àǵǰí ÀÖ´Â ÀûÀýÇÑ SelectableChannel ¼­ºê Ŭ·¡½º¸¦ È®ÀåÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

µµÀÔµÈ ¹öÀü :
1.4

JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.