JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent
Ŭ·¡½º ExecutorCompletionService<V>

java.lang.Object 
  »óÀ§¸¦ È®Àå java.util.concurrent.ExecutorCompletionService<V>
¸ðµç ±¸ÇöµÈ ÀÎÅÍÆäÀ̽º:
CompletionService <V>

public class ExecutorCompletionService<V>
extends Object
implements CompletionService <V>

ŽºÅ©ÀÇ ½ÇÇàÀ¸·Î ÁöÁ¤µÈ Executor¸¦ »ç¿ëÇÏ´Â CompletionService . ÀÌ Å¬·¡½º´Â ¼Û½ÅµÈ ŽºÅ©°¡ ¿Ï·á½Ã¿¡ take¸¦ »ç¿ëÇØ ¾×¼¼½º °¡´ÉÇÑ Å¥¿¡ ¹èÄ¡µÇµµ·Ï ÁغñÇÕ´Ï´Ù. ÀÌ Å¬·¡½º´Â °æ·®À̱⠶§¹®¿¡ ŽºÅ© ±×·ìÀ» ó¸®ÇÒ ¶§¿¡ ÀϽûç¿ë ÇÒ ¼ö ÀÖ½À´Ï´Ù.

»ç¿ë¿¹ °¢°¢ÀÌ ¾î¶°ÇÑ Result ÇüÀÇ °ªÀ» µ¹·ÁÁִ ƯÁ¤ÀÇ ¹®Á¦¿¡ ´ëÀÀÇÑ ¼Ò¸£¹Ù¼ÂÆ®¸¦ º¸°ü À¯ÁöÇÏ°í ÀÖ¾î, À̰͵éÀ» µ¿½Ã¿¡ ½ÇÇàÇØ, null ÀÌ¿ÜÀÇ °ªÀ» µ¹·ÁÁÖ´Â °á°ú¸¦ °¢°¢ use(Result r) ¸Þ¼­µå·Î ó¸®ÇÏ´Â °æ¿ì¸¦ »ý°¢ÇսôÙ. ´ÙÀ½°ú °°ÀÌ ±â¼úÇÒ ¼ö ÀÖ½À´Ï´Ù .


void solve(Executor e, Collection<Callable<Result>> solvers)
throws InterruptedException, ExecutionException {
CompletionService<Result> ecs = new ExecutorCompletionService<Result>(e);
for (Callable<Result> s : solvers)
ecs.submit(s);
int n = solvers.size();
for (int i = 0; i < n; ++i) {
Result r = ecs.take(). get();
if (r ! = null) 
use(r);
}
}
À̹øÀº ¿¹¿Ü°¡ ¹ß»ýÇÑ °á°ú¸¦ Á¦¿ÜÇÑ, task setÀÇ ÃÖÃÊÀÇ null ÀÌ¿ÜÀÇ °á°ú¸¦ »ç¿ëÇÏ´Â °æ¿ì¸¦ »ý°¢ÇսôÙ. À¯È¿ÇÑ ÃÖÃÊÀÇ °á°ú¸¦ ÃëµæÇÒ ¼ö ÀÖÀ¸¸é, ´Ù¸¥ ŽºÅ©´Â ¸ðµÎ Ãë¼ÒÇÕ´Ï´Ù.

void solve(Executor e, Collection<Callable<Result>> solvers) 
throws InterruptedException {
CompletionService<Result> ecs = new ExecutorCompletionService<Result>(e);
int n = solvers.size();
List<Future<Result>> futures = new ArrayList<Future<Result>>(n);
Result result = null;
try {
for (Callable<Result> s : solvers)
futures.add(ecs.submit(s));
for (int i = 0; i < n; ++i) {
try {
Result r = ecs.take(). get();
if (r ! = null) {
result = r;
break;
}
} catch(ExecutionException ignore) {}
}
}
finally {
for (Future<Result> f : futures)
f.cancel(true);
}

if (result ! = null)
use(result);
}


»ý¼ºÀÚ °³¿ä
ExecutorCompletionService (Executor  executor)
          ±âº» ŽºÅ©ÀÇ ½ÇÇà¿ëÀ¸·Î ÁöÁ¤µÈ executor¸¦ »ç¿ëÇØ, ¿Ï·á Å¥¿¡ LinkedBlockingQueue¸¦ »ç¿ëÇØ, ExecutorCompletionService¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
ExecutorCompletionService (Executor  executor, BlockingQueue <Future <V >> completionQueue)
          ±âº» ŽºÅ©ÀÇ ½ÇÇà¿ëÀ¸·Î ÁöÁ¤µÈ executor¸¦ »ç¿ëÇØ, ¿Ï·á Å¥·Î ÁöÁ¤µÈ Å¥¸¦ »ç¿ëÇØ, ExecutorCompletionService¸¦ ÀÛ¼ºÇÕ´Ï´Ù.
 
¸Þ¼­µå °³¿ä
 Future <V > poll ()
          ´ÙÀ½ÀÇ ¿Ï·áÇÊ Å½ºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ Ãëµæ ¹× »èÁ¦ÇÕ´Ï´Ù.
 Future <V > poll (long timeout, TimeUnit  unit)
          ´ÙÀ½ÀÇ ¿Ï·áÇÊ Å½ºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ Ãëµæ ¹× »èÁ¦ÇÕ´Ï´Ù.
 Future <V > submit (Callable <V > task)
          °ªÀ» µ¹·ÁÁÖ´Â ½ÇÇà¿ë ŽºÅ©¸¦ ¼Û½ÅÇØ, º¸·ù »óÅÂÀÇ Å½ºÅ© °á°ú¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 Future <V > submit (Runnable  task, V  result)
          ½ÇÇàÇÏ´Â Runnable ŽºÅ©¸¦ ¼Û½ÅÇØ, ±× ŽºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 Future <V > take ()
          ´ÙÀ½ÀÇ ¿Ï·áÇÊ Å½ºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ Ãëµæ ¹× »èÁ¦ÇÕ´Ï´Ù.
 
Ŭ·¡½º java.lang. Object ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼­µå
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

»ý¼ºÀÚ »ó¼¼

ExecutorCompletionService

public ExecutorCompletionService(Executor  executor)
±âº» ŽºÅ©ÀÇ ½ÇÇà¿ëÀ¸·Î ÁöÁ¤µÈ executor¸¦ »ç¿ëÇØ, ¿Ï·á Å¥¿¡ LinkedBlockingQueue¸¦ »ç¿ëÇØ, ExecutorCompletionService¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
executor - »ç¿ëÇÏ´Â executor
¿¹¿Ü:
NullPointerException - executor°¡ nullÀÎ °æ¿ì

ExecutorCompletionService

public ExecutorCompletionService(Executor  executor,
                                 BlockingQueue <Future <V >> completionQueue)
±âº» ŽºÅ©ÀÇ ½ÇÇà¿ëÀ¸·Î ÁöÁ¤µÈ executor¸¦ »ç¿ëÇØ, ¿Ï·á Å¥·Î ÁöÁ¤µÈ Å¥¸¦ »ç¿ëÇØ, ExecutorCompletionService¸¦ ÀÛ¼ºÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
executor - »ç¿ëÇÏ´Â executor
completionQueue - º¸Åë, ÀÌ ¼­ºñ½º Àü¿ëÀÇ ¿Ï·á Å¥·Î¼­ »ç¿ëÇϴ ť
¿¹¿Ü:
NullPointerException - executor ¶Ç´Â completionQueue°¡ nullÀÎ °æ¿ì
¸Þ¼­µåÀÇ »ó¼¼

submit

public Future <V > submit(Callable <V > task)
ÀÎÅÍÆäÀ̽º CompletionService ±â¼ú:
°ªÀ» µ¹·ÁÁÖ´Â ½ÇÇà¿ë ŽºÅ©¸¦ ¼Û½ÅÇØ, º¸·ù »óÅÂÀÇ Å½ºÅ© °á°ú¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¿Ï·á½Ã¿¡ ÀÌ Å½ºÅ©¸¦ ²¨³¾±î Æú¸µ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º CompletionService <V > ³»ÀÇ submit
ÆĶó¹ÌÅÍ:
task - ¼Û½ÅÇϴ ŽºÅ©
¹Ýȯ°ª:
ŽºÅ©ÀÇ º¸·ù ¿Ï·á¸¦ ³ªÅ¸³»´Â Future

submit

public Future <V > submit(Runnable  task,
                        V  result)
ÀÎÅÍÆäÀ̽º CompletionService ±â¼ú:
½ÇÇàÇÏ´Â Runnable ŽºÅ©¸¦ ¼Û½ÅÇØ, ±× ŽºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¿Ï·á½Ã¿¡ ÀÌ Å½ºÅ©¸¦ ²¨³¾±î Æú¸µ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º CompletionService <V > ³»ÀÇ submit
ÆĶó¹ÌÅÍ:
task - ¼Û½ÅÇϴ ŽºÅ©
result - Á¤»óÀûÀ¸·Î ¿Ï·áÇßÀ» °æ¿ì¿¡ µ¹·ÁÁÖ´Â °á°ú
¹Ýȯ°ª:
ŽºÅ©ÀÇ º¸·ù ¿Ï·á¸¦ ³ªÅ¸³»´Â Future. ±× get() ¸Þ¼­µå´Â ¿Ï·á½Ã·Î ÁöÁ¤µÈ °á°úÄ¡¸¦ µ¹·ÁÁØ´Ù

take

public Future <V > take()
               throws InterruptedException 
ÀÎÅÍÆäÀ̽º CompletionService ±â¼ú:
´ÙÀ½ÀÇ ¿Ï·áÇÊ Å½ºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ Ãëµæ ¹× »èÁ¦ÇÕ´Ï´Ù. ¾Æ¹«°Íµµ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â ´ë±âÇÕ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º CompletionService <V > ³»ÀÇ take
¹Ýȯ°ª:
´ÙÀ½ÀÇ ¿Ï·áÇÊ Å½ºÅ©¸¦ ³ªÅ¸³»´Â Future
¿¹¿Ü:
InterruptedException - ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì

poll

public Future <V > poll()
ÀÎÅÍÆäÀ̽º CompletionService ±â¼ú:
´ÙÀ½ÀÇ ¿Ï·áÇÊ Å½ºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ Ãëµæ ¹× »èÁ¦ÇÕ´Ï´Ù. ¾Æ¹«°Íµµ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â nullÀ» ¸®ÅÏÇÕ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º CompletionService <V > ³»ÀÇ poll
¹Ýȯ°ª:
´ÙÀ½ÀÇ ¿Ï·áÇÊ Å½ºÅ©¸¦ ³ªÅ¸³»´Â Future. ¾Æ¹«°Íµµ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â null

poll

public Future <V > poll(long timeout,
                      TimeUnit  unit)
               throws InterruptedException 
ÀÎÅÍÆäÀ̽º CompletionService ±â¼ú:
´ÙÀ½ÀÇ ¿Ï·áÇÊ Å½ºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ Ãëµæ ¹× »èÁ¦ÇÕ´Ï´Ù. ¾Æ¹«°Íµµ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì, ÇÊ¿ä¿¡ µû¶ó¼­ ÁöÁ¤µÈ ´ë±â ½Ã°£±îÁö ´ë±âÇÕ´Ï´Ù.

Á¤ÀÇ:
ÀÎÅÍÆäÀ̽º CompletionService <V > ³»ÀÇ poll
ÆĶó¹ÌÅÍ:
timeout - 󸮸¦ ÁßÁöÇÒ ¶§±îÁöÀÇ ´ë±â ½Ã°£. ´ÜÀ§´Â unit
unit - timeout ÆĶó¹ÌÅÍÀÇ Çؼ® ¹æ¹ýÀ» ÁöÁ¤ÇÏ´Â TimeUnit
¹Ýȯ°ª:
´ÙÀ½ÀÇ ¿Ï·áÇÊ Å½ºÅ©¸¦ ³ªÅ¸³»´Â Future. ÁöÁ¤µÈ ´ë±â ½Ã°£ÀÌ °æ°úÇصµ ¾Æ¹«°Íµµ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì´Â null
¿¹¿Ü:
InterruptedException - ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì

JavaTM 2 Platform
Standard Ed. 5.0

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