|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
E
- Ä÷º¼Ç³»¿¡ Á¸ÀçÇÏ´Â ¿ä¼ÒÀÇ ÇüÅÂpublic interface BlockingQueue<E>
¿ä¼ÒÀÇ Ãëµæ½Ã¿¡ Å¥°¡ ºô ¶§±îÁö ´ë±âÇϰųª ¿ä¼ÒÀÇ Æ÷ÇԽÿ¡ Å¥³»ÀÇ °ø°£ÀÌ ÀÌ¿ë °¡´ÉÇÏ°Ô µÉ ¶§±îÁö ´ë±âÇÏ´Â Á¶ÀÛÀ» Ãß°¡ Áö¿øÇÏ´Â Queue
.
BlockingQueue´Â null ¿ä¼Ò¸¦ ¹Þ¾ÆµéÀÌÁö ¾Ê½À´Ï´Ù. null add, put, ¶Ç´Â offer°¡ ½ÃµµµÇ¸é, ±¸Çö¿¡ ÀÇÇØ NullPointerExceptionÀÌ ¹ß»ý µË´Ï´Ù. poll Á¶ÀÛÀÌ ½ÇÆÐÇÑ °ÍÀ» ³ªÅ¸³»´Â Ç¥Áö°ªÀ¸·Î null°¡ »ç¿ëµË´Ï´Ù.
BlockingQueue´Â ¿ë·®ÀÌ Á¦ÇѵǴ °æ¿ì°¡ ÀÖ½À´Ï´Ù. À̰ÍÀÌ ¾ðÁ¨°¡´Â remainingCapacity¸¦ ÃʰúÇϸé, ºí·Ï¾øÀÌ Ãß°¡ ¿ä¼Ò¸¦ put ÇÒ ¼ö ¾ø°Ô µË´Ï´Ù. ºôÆ®ÀÎ ¿ë·® Á¦ÇѾøÀÌ BlockingQueue¸¦ »ç¿ëÇϸé, Integer.MAX_VALUE ³ª¸ÓÁöÀÇ ¿ë·®ÀÌ Ç×»ó ¸®Æ÷Æ®µË´Ï´Ù.
BlockingQuere
±¸ÇöÀº ÁÖ·Î ÇÁ·Îµà¼¿Í ÄÁ½´¸Ó(consumer)ÀÇ »çÀÌÀÇ Å¥·Î »ç¿ëÇϵµ·Ï ¼³°èµÇ°í ÀÖ½À´Ï´Ù¸¸, Collection
ÀÎÅÍÆäÀ̽ºµµ Ãß°¡ÀûÀ¸·Î Áö¿ø
ÇÕ´Ï´Ù. µû¶ó¼, ¿¹¸¦ µé¾î remove (x)¸¦ »ç¿ëÇØ Å¥·ÎºÎÅÍ ¿ä¼Ò¸¦ ÀÓÀÇ·Î »èÁ¦ÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. ±×·¯³ª, ÀÌ·¯ÇÑ Á¶ÀÛÀº ÀϹÝÀûÀ¸·Î ½ÇÇàÀÇ È¿À²ÀÌ ³ª»Ú±â ¶§¹®¿¡
Å¥³»ÀÇ ¸Þ¼¼ÁöÀÇ Ãë¼Ò µî ƯÁ¤ÀÇ ¿ëµµ°¡ ÀÖ´Â °æ¿ì¿¡°Ô¸¸ ½ÇÇàµË´Ï´Ù.
BlockingQueue ±¸ÇöÀº thread ¼¼ÀÌÇÁÀÔ´Ï´Ù. ¸ðµç Å¥À× ¸Þ¼µå´Â ³»ºÎ ¶ô ¶Ç´Â ´Ù¸¥ º´·ÄÀûÀÎ Á¦¾î Çü½ÄÀ» »ç¿ëÇØ È¿°ú¸¦ ºÒ°¡ºÐ¿¡ ´Þ¼ºÇÕ´Ï´Ù. ±×·¯³ª, Ä÷º¼Ç Á¶ÀÛÀ» ¡¸Àϰý¡¹ÇÏ´Â addAll, containsAll, retainAll ¹× removeAll´Â ±¸Çö½Ã¿¡ ´Ù¸¥ ÁöÁ¤À̵Ǿî ÀÖÁö ¾ÊÀº ÇÑ, ºÒ°¡ºÐ¿¡ ½ÇÇàÇÒ ÇÊ¿ä´Â ¹Ýµå½Ã ¾ø½À´Ï´Ù. µû¶ó¼, ¿¹¸¦ µé¾î, addAll (c)¿¡ ¼´Â c¿¡ ´Ù¸¥ ¿ä¼ÒÀÇ ÀϺθ¸À» Ãß°¡ÇÑ ÈÄ¿¡ ¿¹¿Ü¸¦ ThrowÀÇÇØ ½ÇÆÐÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
BlockingQueue´Â º»·¡, Ç׸ñÀÌ ´õ ÀÌ»ó Ãß°¡µÇÁö ¾Ê´Â °ÍÀ» ³ªÅ¸³»´Â ¡¸Å¬·Î¿ìÁ¶Ç´Â ¡¸¼Ë´Ù¿î¡¹Á¶ÀÛÀ» ¾î¶°ÇÑ Á¾·ùµç Áö¿ø ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ·± Á¾·ùÀÇ ±â´ÉÀÇ ¿ä±¸³ª »ç¿ëÀº ±¸Çö¿¡ ÀÇÁ¸µÈ °æÇâÀÌ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÇÁ·Îµà¼·Î Ư¼öÇÑ end-of-stream ¶Ç´Â poison °´Ã¼¸¦ »ðÀÔÇØ, ÄÁ½´¸Ó(consumer)¿¡ ÇÑ Ãëµæ½Ã¿¡ À̰͵éÀÌ Àû´ç ÇØ¼®µÈ´Ù, ¶ó°í ÇÒ ¹æ¹ýÀÌ ÀϹÝÀûÀÔ´Ï´Ù.
´ÙÀ½¿¡ º¸Åë ÀÇ ÇÁ·Îµà¼ - ÄÁ½´¸Ó(consumer) ½Ã³ª¸®¿À¿¡ ±Ù°ÅÇÏ´Â »ç¿ë¿¹¸¦ ³ªÅ¸³À´Ï´Ù. BlockingQueue Àº º¹¼öÀÇ ÇÁ·Îµà¼ ¹× º¹¼öÀÇ ÄÁ½´¸Ó(consumer)·Î ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.
class Producer implements Runnable { private final BlockingQueue queue; Producer(BlockingQueue q) { queue = q; } public void run() { try { while(true) { queue.put(produce()); } } catch (InterruptedException ex) { ... handle ...} } Object produce() { ... } } class Consumer implements Runnable { private final BlockingQueue queue; Consumer(BlockingQueue q) { queue = q; } public void run() { try { while(true) { consume(queue.take()); } } catch (InterruptedException ex) { ... handle ...} } void consume(Object x) { ... } } class Setup { void main() { BlockingQueue q = new SomeQueueImplementation(); Producer p = new Producer(q); Consumer c1 = new Consumer(q); Consumer c2 = new Consumer(q); new Thread(p). start(); new Thread(c1). start(); new Thread(c2). start(); } }
ÀÌ ÀÎÅÍÆäÀ̽º´Â Java Collections Framework ¸â¹öÀÔ´Ï´Ù.
¸Þ¼µå °³¿ä | |
---|---|
boolean |
add (E o)
ÀÌ Å¥·Î ÁöÁ¤µÈ ¿ä¼Ò¸¦ Ãß°¡ÇÕ´Ï´Ù. |
int |
drainTo (Collection <? super E > c)
ÀÌ¿ë °¡´ÉÇÑ ¸ðµç ¿ä¼Ò¸¦ ÀÌ Å¥·ÎºÎÅÍ »èÁ¦ÇØ, ÁöÁ¤µÈ Ä÷º¼Ç¿¡ Ãß°¡ÇÕ´Ï´Ù. |
int |
drainTo (Collection <? super E > c,
int maxElements)
ÁöÁ¤µÈ ¼öÀ̳»ÀÇ ÀÌ¿ë °¡´ÉÇÑ ¿ä¼Ò¸¦ ÀÌ Å¥·ÎºÎÅÍ »èÁ¦ÇØ, ÁöÁ¤µÈ Ä÷º¼Ç¿¡ Ãß°¡ÇÕ´Ï´Ù. |
boolean |
offer (E o)
°¡´ÉÇÑ °æ¿ì, ÁöÁ¤µÈ ¿ä¼Ò¸¦ ÀÌ Å¥¿¡ »ðÀÔÇÕ´Ï´Ù. |
boolean |
offer (E o,
long timeout,
TimeUnit unit)
ÁöÁ¤µÈ ¿ä¼Ò¸¦ ÀÌ Å¥¿¡ »ðÀÔÇÕ´Ï´Ù. |
E |
poll (long timeout,
TimeUnit unit)
ÀÌ Å¥ÀÇ ¼±µÎ¸¦ Ãëµæ ¹× »èÁ¦ÇÕ´Ï´Ù. |
void |
put (E o)
ÁöÁ¤µÈ ¿ä¼Ò¸¦ ÀÌ Å¥¿¡ Ãß°¡ÇÕ´Ï´Ù. |
int |
remainingCapacity ()
ÀÌ Å¥°¡ ÀÌ»óÀûÀÎ »óÅ (¸Þ¸ð¸®³ª ÀÚ¿øÀÇ Á¦ÇÑÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù)·Î ºí·ÎÅ·¾øÀÌ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Â ¿ä¼ÒÀÇ ¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
E |
take ()
ÀÌ Å¥ÀÇ ¼±µÎ¸¦ Ãëµæ ¹× »èÁ¦ÇÕ´Ï´Ù. |
ÀÎÅÍÆäÀ̽º java.util. Queue ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼µå |
---|
element,
peek,
poll,
remove |
ÀÎÅÍÆäÀ̽º java.util. Collection ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼µå |
---|
addAll,
clear,
contains,
containsAll,
equals,
hashCode,
isEmpty,
iterator,
remove,
removeAll,
retainAll,
size,
toArray,
toArray |
¸Þ¼µåÀÇ »ó¼¼ |
---|
boolean offer(E o)
Collection.add(E)
¸Þ¼µåº¸´Ù offer ¸Þ¼µå¸¦ »ç¿ëÇÏ´Â °ÍÀ» ÃßõÇÕ´Ï´Ù.
Queue <E >
³»ÀÇ offer
o
- Ãß°¡ÇÏ´Â ¿ä¼Ò
NullPointerException
- ÁöÁ¤µÈ ¿ä¼Ò°¡ null ÀÎ °æ¿ìboolean offer(E o, long timeout, TimeUnit unit) throws InterruptedException
o
- Ãß°¡ÇÏ´Â ¿ä¼Òtimeout
- 󸮸¦ ÁßÁöÇÒ ¶§±îÁöÀÇ ´ë±â ½Ã°£. ´ÜÀ§´Â unitunit
- timeout ÆÄ¶ó¹ÌÅÍÀÇ ÇØ¼® ¹æ¹ýÀ» ÁöÁ¤ÇÏ´Â TimeUnit
InterruptedException
- ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì
NullPointerException
- ÁöÁ¤µÈ ¿ä¼Ò°¡ null ÀÎ °æ¿ìE poll(long timeout, TimeUnit unit) throws InterruptedException
timeout
- 󸮸¦ ÁßÁöÇÒ ¶§±îÁöÀÇ ´ë±â ½Ã°£. ´ÜÀ§´Â unitunit
- timeout ÆÄ¶ó¹ÌÅÍÀÇ ÇØ¼® ¹æ¹ýÀ» ÁöÁ¤ÇÏ´Â TimeUnit
InterruptedException
- ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ìE take() throws InterruptedException
InterruptedException
- ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ìvoid put(E o) throws InterruptedException
o
- Ãß°¡ÇÏ´Â ¿ä¼Ò
InterruptedException
- ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì
NullPointerException
- ÁöÁ¤µÈ ¿ä¼Ò°¡ null ÀÎ °æ¿ìint remainingCapacity()
remainingCapacity¸¦ È®ÀÎÇϸé, ¿ä¼ÒÀÇ add Á¶ÀÛÀÌ ¾ðÁ¦³ª ¼º°øÇÏ´Â °ÍÀº ¾Æ´Ñ °ÍÀ» ¾Ð´Ï´Ù. À̰ÍÀº ´Ù¸¥ thread°¡ ¿ä¼ÒÀÇ put ¶Ç´Â take Á¶ÀÛÀ» ½ÇÇàÇÏ·Á°í Çϰí ÀÖ´Â °æ¿ì°¡ Àֱ⠶§¹®¿¡ÀÔ´Ï´Ù.
boolean add(E o)
Collection <E >
³»ÀÇ add
o
- ¿ä¼Ò
NullPointerException
- ÁöÁ¤µÈ ¿ä¼Ò°¡ null ÀÎ °æ¿ì
IllegalStateException
- ¿ä¼Ò¸¦ Ãß°¡ÇÒ ¼ö ¾ø´Â °æ¿ìint drainTo(Collection <? super E > c)
c
- ¿ä¼ÒÀÇ Àü¼ÛóÀÇ Ä÷º¼Ç
NullPointerException
- c°¡ nullÀÎ °æ¿ì
IllegalArgumentException
- c°¡ ÀÌ Å¥ÀÎ °æ¿ìint drainTo(Collection <? super E > c, int maxElements)
c
- ¿ä¼ÒÀÇ Àü¼ÛóÀÇ Ä÷º¼ÇmaxElements
- Àü¼Û ÇÏ´Â ¿ä¼ÒÀÇ ÃÖ´ë¼ö
NullPointerException
- c°¡ nullÀÎ °æ¿ì
IllegalArgumentException
- c°¡ ÀÌ Å¥ÀÎ °æ¿ì
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: NESTED | Çʵå | »ý¼ºÀÚ | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.