|
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 µµ ÂüÁ¶ÇϽʽÿÀ.