|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| ÀüÀÇ ÆÐŰÁö ´ÙÀ½ÀÇ ÆÐŰÁö | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
ÂüÁ¶Ã³:
¼³¸í
| ÀÎÅÍÆäÀ̽º °³¿ä | |
|---|---|
| BlockingQueue<E> | ¿ä¼ÒÀÇ Ãëµæ½Ã¿¡ Å¥°¡ ºô ¶§±îÁö ´ë±âÇϰųª ¿ä¼ÒÀÇ Æ÷ÇԽÿ¡ Å¥³»ÀÇ °ø°£ÀÌ ÀÌ¿ë °¡´ÉÇÏ°Ô µÉ ¶§±îÁö ´ë±âÇÏ´Â Á¶ÀÛÀ» Ãß°¡ Áö¿øÇÏ´Â Queue . |
| Callable<V> | °á°ú¸¦ µ¹·ÁÁִ ŽºÅ©. |
| CompletionService<V> | »õ·Î¿î ºñµ¿±â ŽºÅ©ÀÇ »ý¼ºÀ» ¿Ï·áÇÊ Å½ºÅ©ÀÇ °á°úÀÇ ¼Òºñ·ÎºÎÅÍ ºÐ¸®ÇÏ´Â ¼ºñ½º. |
| ConcurrentMap<K, V> | Ãß°¡ÀÇ ¿øÀÚÀû putIfAbsent, remove, replace ¸Þ¼µå¸¦ Á¦°øÇÏ´Â Map . |
| Delayed | ÁöÁ¤µÈ Áö¿¬ ÈÄ¿¡ µ¿ÀÛÇÏ´Â °´Ã¼¸¦ ¸¶Å©Çϱâ À§ÇÑ, È¥ÇÕ ½ºÅ¸ÀÏÀÇ ÀÎÅÍÆäÀ̽ºÀÌ ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀº, getDelay ¸Þ¼µå¿Í Á¤ÇÕ¼ºÀÌ ÀÖ´Â ¼ø¼¸¦ Á¦°øÇÏ´Â compareTo ¸Þ¼µå¸¦ Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. |
| Executor | ¼Û½ÅµÈ Runnable ŽºÅ©¸¦ ½ÇÇàÇÏ´Â °´Ã¼. |
| ExecutorService | Á¾·á¸¦ °ü¸®ÇÏ´Â ¸Þ¼µå ¹× 1°³
ÀÌ»óÀÇ ºñµ¿±â ŽºÅ©ÀÇ ÁøÇà »óȲÀ» ÃßÀûÇÏ´Â Future¸¦
»ý¼º °¡´ÉÇÑ ¸Þ¼µå¸¦ Á¦°øÇÏ´Â Executor . |
| Future<V> | Future´Â ºñµ¿±â °è»êÀÇ °á°ú¸¦ ³ªÅ¸³À´Ï´Ù. |
| RejectedExecutionHandler | ThreadPoolExecutor ·Î ½ÇÇà ºÒ°¡´ÉÇÑ Å½ºÅ©ÀÇ Çڵ鷯 |
| ScheduledExecutorService | ÁöÁ¤µÈ Áö¿¬ ½Ã°£ ÈÄ, ¶Ç´Â ÁÖ±âÀûÀ¸·Î Ä¿¸àµåÀÇ ½ÇÇàÀ» ½ºÄÉÁÙ °¡´ÉÇÑ ExecutorService . |
| ScheduledFuture<V> | Ãë¼ÒÇØ °¡´ÉÇÑ, Áö¿¬ µÈ °á°ú »ý¼º ¾×¼Ç. |
| ThreadFactory | ¿ä±¸¿¡ ÀÀÇØ »õ·Î¿î thread¸¦ ÀÛ¼ºÇÏ´Â °´Ã¼. |
| Ŭ·¡½º °³¿ä | |
|---|---|
| AbstractExecutorService | ExecutorService ½ÇÇà ¸Þ¼µåÀÇ µðÆúÆ® ±¸ÇöÀ» Á¦°øÇÕ´Ï´Ù. |
| ArrayBlockingQueue<E> | ¹è¿¿¡ ±Ù°ÅÇÏ´Â ¹Ù¿îµå Çü½Äºí·Ï Å¥ . |
| ConcurrentHashMap<K, V> | ÃëµæÀÇ ¿ÏÀüÇÑ µ¿½Ã¼º ¹× ¿¹»óµÇ´Â Á¶Á¤ °¡´ÉÇÑ °»½Å µ¿½Ã¼ºÀ» Áö¿øÇÏ´Â ÇØ½Ã Å×À̺í. |
| ConcurrentLinkedQueue<E> | ¾È ¹Ù¿îµå Çü½ÄÀÇ thread ¼¼ÀÌÇÁÀΠť º£À̽ºÀÇ ¸µÅ© ³ëµå. |
| CopyOnWriteArrayList<E> | ±âº»À¸·Î µÇ´Â ¹è¿ÀÇ »õ·Î¿î º¹»çº»À» ÀÛ¼ºÇÔÀ¸·Î½á
¸ðµç º¯°æ Á¶ÀÛ (Ãß°¡ ¼³Á¤µî)ÀÌ ±¸ÇöµÇ´Â ArrayList
thread ¼¼ÀÌÇÁÀÎ º¯¼öÀÔ´Ï´Ù. |
| CopyOnWriteArraySet<E> | ¸ðµç Á¶ÀÛÀ¸·Î CopyOnWriteArrayList¸¦
»ç¿ëÇÏ´Â Set . |
| CountDownLatch | ´Ù¸¥ thread·Î ½ÇÇàÁßÀÇ Á¶ÀÛ ¼¼Æ®°¡ ¿Ï·áÇÒ ¶§±îÁö, 1°³ ÀÌ»óÀÇ thread¸¦ ´ë±â °¡´ÉÇÏ°Ô ÇÏ´Â µ¿±â Áö¿ø. |
| CyclicBarrier | thread ¼¼Æ®ÀÇ °¢°¢ÀÌ °øÅëÀÇ ¹Ù¸®¾î Æ÷ÀÎÆ®¿¡ À̸¦ ¶§±îÁö ´ë±âÇÏ´Â °ÍÀ» °¡´ÉÇÏ°Ô ÇÏ´Â µ¿±âÈ Áö¿ø ±â´É. |
| DelayQueue<E extends Delayed> | Delayed ¿ä¼ÒÀÇ ¾È ¹Ù¿îµå Çü½Äºí·Ï Å¥ . |
| Exchanger<V> | 2°³ÀÇ thread°¡ °´Ã¼¸¦ ±³È¯ °¡´ÉÇÑ µ¿±â Æ÷ÀÎÆ®. |
| ExecutorCompletionService<V> | ŽºÅ©ÀÇ ½ÇÇàÀ¸·Î ÁöÁ¤µÈ Executor¸¦
»ç¿ëÇÏ´Â CompletionService . |
| Executors | ÀÌ ÆÐŰÁö·Î Á¤ÀÇµÈ Executor,
ExecutorService,
ScheduledExecutorService,
ThreadFactory ¹× Callable Ŭ·¡½º¿ëÀÇ ÆÑÅ丮 ¹× À¯Æ¿¸®Æ¼ ¸Þ¼µå. |
| FutureTask<V> | Ãë¼ÒÇØ °¡´ÉÇÑ ºñµ¿±â °è»ê. |
| LinkedBlockingQueue<E> | ¸µÅ© ³ëµå¿¡ ±Ù°ÅÇÏ´Â ¿É¼ÇÀÇ ¹Ù¿îµå Çü½Äºí·Ï Å¥ . |
| PriorityBlockingQueue<E> | PriorityQueue Ŭ·¡½º¿Í °°Àº ¼ø¼ºÎ ±ÔÄ¢À» »ç¿ëÇØ, ºí·Ï Ãëµæ Á¶ÀÛÀ» Á¦°øÇÏ´Â ¾È ¹Ù¿îµå Çü½Äºí·Ï Å¥ . |
| ScheduledThreadPoolExecutor | ÁöÁ¤µÈ Áö¿¬ ÈÄ ¶Ç´Â ÁÖ±âÀûÀ¸·Î ½ÇÇàÇϱâ À§ÇÑ Ä¿¸àµå¸¦ Ãß°¡ ½ºÄÉÁÙ °¡´ÉÇÑ ThreadPoolExecutor . |
| Semaphore | Ä«¿îÆ®¿¡ »ç¿ëµÇ´Â semaphore. |
| SynchronousQueue<E> | °¢ put°¡ take¸¦ ´ë±âÇØ, ±× ¿ªµµ ½ÇÇàÇÒ Çʿ䰡 Àִºí·Ï Å¥ . |
| ThreadPoolExecutor | ¸¹Àº °æ¿ì, Ç® µÈ º¹¼öÀÇ threadÀÇ ¾î´ÀÂÊÀ̵çÀ» »ç¿ëÇØ, ¼Û½ÅµÈ °¢ ŽºÅ©¸¦ ½ÇÇàÇÏ´Â ExecutorService . |
| ThreadPoolExecutor.AbortPolicy | RejectedExecutionExceptionÀ» Throw ÇÑ´Ù, °ÅºÎµÈ ŽºÅ©ÀÇ Çڵ鷯. |
| ThreadPoolExecutor.CallerRunsPolicy | executor°¡ ¼Ë´Ù¿î Çϰí ÀÖÁö ¾Ê´Â °æ¿ì¿¡ execute ¸Þ¼µåÀÇ thread È£Ãâ·Î °ÅºÎµÈ ŽºÅ©¸¦ Á÷Á¢ ½ÇÇàÇÑ´Ù, °ÅºÎµÈ ŽºÅ©ÀÇ Çڵ鷯. |
| ThreadPoolExecutor.DiscardOldestPolicy | executor°¡ ¼Ë´Ù¿î Çϰí ÀÖÁö ¾Ê´Â °æ¿ì¿¡ °¡Àå ³°Àº ¹Ìó¸®ÀÇ ¿ä±¸¸¦ ÆÄ±âÇØ execute¸¦ Àç½ÃÇàÇÑ´Ù, °ÅºÎµÈ ŽºÅ©ÀÇ Çڵ鷯. |
| ThreadPoolExecutor.DiscardPolicy | °ÅºÎµÈ ŽºÅ©¸¦ ¿¹°í ¾øÀÌ ÆÄ±âÇÑ´Ù, °ÅºÎµÈ ŽºÅ©ÀÇ Çڵ鷯. |
| ¿°ÅÇüÀÇ °³¿ä | |
|---|---|
| TimeUnit | TimeUnit´Â ±â°£ÀÌ ÁöÁ¤µÈ ÀÔµµ ´ÜÀ§·Î ³ªÅ¸³À´Ï´Ù. |
| ¿¹¿Ü °³¿ä | |
|---|---|
| BrokenBarrierException | °íÀå »óÅ¿¡ ÀÖ´ÂÁö, threadÀÇ ´ë±âÁß¿¡ °íÀå »óÅ¿¡ µé¾î°¡´Â ¹Ù¸®¾î¸¦, thread°¡ ´ë±âÇÏ·Á°í Çϰí ÀÖÀ» ¶§ ¹ß»ýµÇ´Â ¿¹¿ÜÀÔ´Ï´Ù. |
| CancellationException | ŽºÅ©°¡ »èÁ¦µÇ¾ú±â ¶§¹®¿¡
FutureTask µîÀÇ °ªÀ» »ý¼ºÇϴ ŽºÅ©ÀÇ °á°ú¸¦ ÃëµæÇÒ ¼ö ¾ø´Â °ÍÀ» ³ªÅ¸³»´Â ¿¹¿Ü. |
| ExecutionException | ¿¹¿ÜÀÇ Throw¿¡ ÀÇÇØ Áß´ÜµÈ Å½ºÅ©ÀÇ °á°ú¸¦ ÃëµæÇÏ·Á°í ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â ¿¹¿Ü. |
| RejectedExecutionException | ŽºÅ©¸¦ ¹Þ¾Æµé¿© ½ÇÇàÇÒ ¼ö ¾ø´Â °æ¿ì¿¡
Executor ¿¡ ÀÇÇØ ¹ß»ýµÇ´Â ¿¹¿Ü |
| TimeoutException | ºí·Ï Á¶ÀÛÀÌ Å¸ÀÓ ¾Æ¿ô ÇßÀ» ¶§¿¡ ¹ß»ýµÇ´Â ¿¹¿Ü. |
º¸Åë, À¯Æ¿¸®Æ¼ Ŭ·¡½º´Â º´Çà ÇÁ·Î±×·¡¹ÖÀ¸·Î À¯¿ëÇÕ´Ï´Ù. ÀÌ ÆÐŰÁö¿¡´Â ¸î°³ÀÇ ¼Ò±Ô¸ðÀÇ Ç¥ÁØÈ µÈ È®Àå °¡´É üÁ¦ ¹× Æí¸®¼ºÀÌ ³ô°í, ´Ù¸¥ Á¡¿¡¼´Â ´ÜÁ¶·Î¿ö ±¸ÇöÀÇ °ï¶õÇÑ ±â´ÉÀ» Á¦°øÇϴ Ŭ·¡½º°¡ Æ÷ÇԵ˴ϴÙ. ÀÌÇÏ¿¡ ÁÖ¿ä ÄÄÆÛ³ÍÆ®¿¡ ´ëÇØ °£°áÇÏ°Ô ¼³¸íÇÕ´Ï´Ù. locks ¹× atomic ÆÐŰÁöµµ ÂüÁ¶ÇϽʽÿÀ.
Executor ´Â
thread Ç®, ºñµ¿±â ÀÔÃâ·Â ¹× °æ·® ŽºÅ© üÁ¦¸¦ Æ÷ÇÔÇÑ, thread¸¦ ´àÀº Ä¿½ºÅÒ ÇϺÎÁ¶Á÷À» Á¤ÀÇÇϱâ À§ÇÑ Ç¥ÁØÈ µÈ ´Ü¼øÇÑ ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. »ç¿ëÁßÀÇ ±¸»ó Executor Ŭ·¡½º¿¡ ÀÀÇØ, »õ·Î¿î ÀÛ¼ºµÈ thread, ±âÁ¸ÀÇ Å½ºÅ© ½ÇÇà thread, ¶Ç´Â execute()¸¦ È£ÃâÇÏ´Â thread³»¿¡¼ ŽºÅ©¸¦ Â÷·ÊÂ÷·Ê ¶Ç´Â µ¿½Ã¿¡ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ExecutorService ´Â
º¸´Ù ¿Ï¼ºµµÀÇ ³ôÀº µ¿±â ŽºÅ© ½ÇÇà üÁ¦¸¦ Á¦°øÇÕ´Ï´Ù. ExecutorService´Â
ŽºÅ©ÀÇ Å¥À× ¹× ½ºÄÉÁÙ¸µÀ» °ü¸®ÇØ, Á¦¾îµÈ ¼Ë´Ù¿îÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.
ScheduledExecutorService ¼ºê ÀÎÅÍÆäÀ̽º´Â Áö¿¬ ¹× ÁÖ±âÀûÀΠŽºÅ© ½ÇÇà Áö¿ø¸¦ Ãß°¡ÇÕ´Ï´Ù. ExecutorServices´Â
Runnable ¿Í
À¯»çÇÑ °á°ú¸¦ ¾òÀ» ¼ö ÀÖ´Â Callable ·Î Ç¥ÇöµÇ´Â ÀÓÀÇÀÇ ÇÔ¼öÀÇ ºñµ¿±â ½ÇÇàÀ» °áÁ¤ÇÏ´Â ¸Þ¼µå¸¦ Á¦°øÇÕ´Ï´Ù. Future ´Â
ÇÔ¼öÀÇ °á°ú¸¦ µ¹·ÁÁÖ°í, ½ÇÇàÀÌ ¿Ï·áÇß´ÂÁö ¾î¶°Çß´ÂÁö¸¦ ÆÇº° °¡´ÉÇÏ°Ô ÇØ, ½ÇÇàÀ» Ãë¼ÒÇÏ´Â ¼ö´ÜÀ» Á¦°øÇÕ´Ï´Ù.
±¸Çö. ThreadPoolExecutor ¹× ScheduledThreadPoolExecutor Ŭ·¡½º´Â Æ©´× °¡´ÉÇØ À¯¿¬¼ºÀÇ ³ôÀº thread Ç®À» Á¦°øÇÕ´Ï´Ù. Executors Ŭ·¡½º´Â Executor
°¡Àå ÀϹÝÀûÀÎ Á¾·ù ¹× ±¸¼ºÀÇ ÆÑÅ丮 ¸Þ¼µå ¹× À̰͵鿡 ƯÈ÷ ´ëÀÀÇÏ°í ½ÍÀº ±¸µÎÀΰ¡ÀÇ À¯Æ¿¸®Æ¼ ¸Þ¼µå¸¦ Á¦°øÇÕ´Ï´Ù. Executor¿¡ ±Ù°ÅÇÏ´Â ´Ù¸¥ À¯Æ¿¸®Æ¼¿¡´Â Future
ÀϹÝÀûÀÎ È®Àå °¡´É ±¸ÇöÀ» Á¦°øÇÏ´Â ±¸»ó Ŭ·¡½º FutureTask ¹× ºñµ¿±â ŽºÅ© ±×·ìÀÇ Ã³¸® Á¶Á¤À» Áö¿øÇÏ´Â ExecutorCompletionService °¡ Æ÷ÇԵ˴ϴÙ.
ConcurrentLinkedQueue Ŭ·¡½º´Â È¿À² ¹× È®À强ÀÌ ³ô°í, thread ¼¼ÀÌÇÁÀÎ ºñºí·ÎÅ· FIFO Å¥¸¦ Á¦°øÇÕ´Ï´Ù. java.util.concurrent
5°³ÀÇ ±¸Çö LinkedBlockingQueue,
ArrayBlockingQueue,
SynchronousQueue,
PriorityBlockingQueue ¹× DelayQueue ´Â
put ¹× take
ºí·ÎÅ· ¹öÀüÀ» Á¤ÀÇÇÏ´Â È®ÀåµÈ BlockingQueue ÀÎÅÍÆäÀ̽º¸¦ Áö¿ø
ÇÕ´Ï´Ù. ÇÁ·Îµà¼ ÄÁ½´¸Ó(consumer), ¸Þ¼¼Áö ó¸®, º´Çà ŽºÅ© ½ÇÇà ¹× °ü·ÃµÈ º´Çà ¼³°è¿ëÀÇ °¡Àå ÀϹÝÀûÀÎ »ç¿ë ÄÁÅØ½ºÆ®Àº ´Ù¸¥ Ŭ·¡½ºÀÇ ´ë»óÀÌ µË´Ï´Ù.
TimeUnit Ŭ·¡½º´Â ŸÀÓ ¾Æ¿ô¿¡ ±Ù°ÅÇÏ´Â Á¶ÀÛÀ» ÁöÁ¤ ¹× Á¦¾îÇϱâ À§ÇÑ º¹¼öÀÇ »ó¼¼ (³ª³ëÃʸ¦ Æ÷ÇÔÇÑ´Ù)¸¦ Á¦°øÇÕ´Ï´Ù. ÆÐŰÁö³»ÀÇ ´ëºÎºÐÀÇ Å¬·¡½º¿¡´Â ¹«Á¦ÇÑÀÇ ´ë±â¿¡ ´õÇØÅ¸ÀÓ ¾Æ¿ô¿¡ ±Ù°ÅÇÏ´Â Á¶ÀÛÀÌ Æ÷ÇԵ˴ϴÙ. ŸÀÓ ¾Æ¿ôÀ» »ç¿ëÇÏ´Â °æ¿ì´Â Ç×»ó, ¸Þ¼µå°¡ ŸÀÓ ¾Æ¿ôÀ» ³ªÅ¸³»±â Àü¿¡ ´ë±âÇÒ Çʿ䰡 ÀÖ´Â ÃÖ¼Ò ½Ã°£ÀÌ, ŸÀÓ ¾Æ¿ô¿¡ ÀÇÇØ ÁöÁ¤µË´Ï´Ù. ±¸ÇöÀº ŸÀÓ ¾Æ¿ôÀÇ ¹ß»ý ´ÙÀ½¿¡ ¿Ã »Ó »¡¸® ±×°ÍÀ» °ËÃâÇϵµ·Ï ÃÖ¼±ÀÌ ³ë·ÂÇÕ´Ï´Ù¸¸, ŸÀÓ ¾Æ¿ôÀÇ °ËÃâ·ÎºÎÅÍ Å¸ÀÓ ¾Æ¿ô ÈÄ¿¡ thread°¡ ½ÇÁ¦·Î Àç½ÇÇàµÇ¾î±îÁöÀÇ »çÀÌ¿¡ ¹«Á¦ÇÑÀÇ ½Ã°£ÀÌ °æ°úÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
Semaphore is a classic concurrency tool.
CountDownLatch is a very simple yet verySemaphore ´Â
Ç¥ÁØÀûÀÎ concurrent processing ÅøÀÔ´Ï´Ù. CountDownLatch ´Â
¸Å¿ì ´Ü¼øÇÕ´Ï´Ù¸¸, ÁöÁ¤µÈ ¼öÀÇ ½ÅÈ£, À̺¥Æ®, ¶Ç´Â »óÅ¿¡ À̸¦ ¶§±îÁö ºí·ÏÇϱâ À§ÇÑ,
ÀϹÝÀûÀÎ À¯Æ¿¸®Æ¼ÀÔ´Ï´Ù. CyclicBarrier ´Â
ÀϺÎÀÇ º´Çà ÇÁ·Î±×·¡¹ÖÀ¸·Î µµ¿òÀÌ µÇ´Â ¼³Á¤ °¡´ÉÇÑ ´ÙÁß µ¿±â Æ÷ÀÎÆ®ÀÔ´Ï´Ù. Exchanger¸¦
»ç¿ëÇϸé, 2°³ÀÇ thread°¡ ¸¸³µÀ» ¶§¿¡ °´Ã¼¸¦ ±³È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù
. À̰ÍÀº ¸î°³ÀÇ ÆÄÀÌÇÁ¶óÀÎ ¼³°è·Î À¯¿ëÇÕ´Ï´Ù. (¡ÚÄÚ¸àÆ® : ÀÌ ¹®ÀåÀÇ Àü2°³ÀÇ ¹®ÀåÀº ¹ø¿ª ´ë»óÀ̶ó°í »ý°¢ÇÕ´Ï´Ù¸¸, ¹ø¿ª ´ë»ó¿Ü·Î¼ ű×È µÇ°í ÀÖ½À´Ï´Ù. ¹ø¿ª¹®À» Ãß°¡Çß½À´Ï´Ù. Ãß°¡ ºÎºÐ£º¡¸Semaphore ´Â
Ç¥ÁØÀûÀÎ concurrent processing ÅøÀÔ´Ï´Ù. CountDownLatch ´Â
¸Å¿ì ´Ü¼øÇÕ´Ï´Ù¸¸,¡¹¡Ú)
ConcurrentHashMap,
CopyOnWriteArrayList ¹× CopyOnWriteArraySet )À» Á¦°øÇÕ´Ï´Ù.
ÀÌ ÆÐŰÁöÀÇ ÀϺÎÀÇ Å¬·¡½º¿¡¼ »ç¿ëµÇ´Â Á¢µÎ»ç ¡¸Concurrent¡¹´Â À¯»çÇÑ ¡¸synchronized¡¹Å¬·¡½º ¹°¾î ±¸µÎÀΰ¡ÀÇ Á¡À¸·Î½á Â÷À̰¡ ÀÖ´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. ¿¹¸¦ µé¾î, java.util.Hashtable ¹× Collections.synchronizedMap(new HashMap())´Â
µ¿±âÈ µË´Ï´Ù. ´Ù¸¸, ConcurrentHashMap ´Â ¡¸µ¿½Ã¡¹ÀÔ´Ï´Ù. µ¿½Ã Ä÷º¼ÇÀº thread ¼¼ÀÌÇÁÀÔ´Ï´Ù¸¸, ´ÜÀÏÀÇ ¹èŸ ¶ô¿¡ ÀÇÇØ Á¦¾îµÇÁö ¾Ê½À´Ï´Ù. ConcurrentHashMap
ƯÁ¤ÀÇ ÄÉÀ̽º¿¡¼´Â µ¿½Ã Ä÷º¼ÇÀº ÀÓÀǼöÀÇ µ¿½Ã read ¹× Á¶Àý °¡´ÉÇÑ ¼öÀÇ µ¿½Ã write¸¦ ¾ÈÀüÇÏ°Ô Çã¿ëÇÕ´Ï´Ù. ¡¸µ¿±âÈ µÇ¾ú´Ù¡¹Å¬·¡½º´Â ´ÜÀÏÀÇ ¶ôÀ» Æ÷ÇÔÇÑ
Ä÷º¼Ç¿¡ÀÇ ¾×¼¼½º ¸ðµç °ÍÀ» ½ºÄÉÀ̶óºñ¸®Æ¼¸¦ Èñ»ýÇØµµ ¸·À» Çʿ䰡 ÀÖ´Â °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù. º¹¼öÀÇ thread°¡ °øÅëÀÇ Ä÷º¼Ç¿¡ ¾×¼¼½º ÇÏ´Â °ÍÀÌ ¿¹»óµÇ´Â ´Ù¸¥ °æ¿ì¿¡´Â ÀϹÝÀûÀ¸·Î ¡¸µ¿½Ã¡¹¹öÀüÀÌ ¿ì¼öÇÕ´Ï´Ù. µ¿±âȵǾî ÀÖÁö ¾ÊÀº Ä÷º¼ÇÀº Ä÷º¼ÇÀÌ °øÀ¯µÇ¾î ÀÖÁö ¾ÊÀºÁö, ´Ù¸¥ ¶ôÀ» º¸°ü À¯ÁöÇϰí ÀÖ´Â °æ¿ì¿¡°Ô¸¸ ¾×¼¼½º °¡´ÉÇÑ °æ¿ì°¡ ¶Ù¾î³³´Ï´Ù.
´ëºÎºÐÀÇ µ¿½Ã Collection ±¸Çö (´ëºÎºÐÀÇ Queue¸¦ Æ÷ÇÔÇÑ´Ù)¿¡¼´Â Iterator¿¡ ÀÇÇØ ÆÄ½ºÆ®ÆäÀ̸£Æ®¶ó¹Ù»ìÀº ¾Æ´Ï°í ¡¸¾àÇÑ Àϰü¼º¡¹ÀÌ Á¦°øµÇ´Â Á¡µµ java.util º¸Åë ÀÇ ±Ô¾à°ú´Â ´Ù¸¨´Ï´Ù. ¾àÇÑ Àϰü¼ºÀ» °¡Áö´Â ¹Ýº¹ÀÚ´Â thread ¼¼ÀÌÇÁÀÔ´Ï´Ù¸¸, ¹Ýµå½Ã ¹Ýº¹Áß¿¡ Ä÷º¼ÇÀ» ´Ù¿î ´çÇÒ ÇÊ¿ä´Â ¾ø±â ¶§¹®¿¡ ¹Ýº¹ÀÚÀÇ ÀÛ¼º ÀÌÈÄÀÇ °»½ÅÀ» ¹Ý¿µÇÏ´Â Àϵµ ¹Ý¿µÇÏÁö ¾Ê´Â °Íµµ °¡´ÉÇÕ´Ï´Ù.
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| ÀüÀÇ ÆÐŰÁö ´ÙÀ½ÀÇ ÆÐŰÁö | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.