JavaTM 2 Platform
Standard Ed. 5.0

java.util.concurrent
ÀÎÅÍÆäÀ̽º ExecutorService

¸ðµç ½´ÆÛ ÀÎÅÍÆäÀ̽º:
Executor
¾Ë·ÁÁø ¼­ºê ÀÎÅÍÆäÀ̽º ¸ñ·Ï :
ScheduledExecutorService
¾Ë·ÁÁø ±¸Çö Ŭ·¡½º ¸ñ·Ï:
AbstractExecutorService, ScheduledThreadPoolExecutor, ThreadPoolExecutor

public interface ExecutorService
extends Executor

Á¾·á¸¦ °ü¸®ÇÏ´Â ¸Þ¼­µå ¹× 1°³ ÀÌ»óÀÇ ºñµ¿±â ŽºÅ©ÀÇ ÁøÇà »óȲÀ» ÃßÀûÇÏ´Â Future¸¦ »ý¼º °¡´ÉÇÑ ¸Þ¼­µå¸¦ Á¦°øÇÏ´Â Executor .

ExecutorService´Â »õ·Î¿î ŽºÅ©ÀÇ ¼ö¶ôÀ» Á¤ÁöÇÏ´Â ¼Ë´Ù¿îÀÌ °¡´ÉÇÕ´Ï´Ù. ¼Ë´Ù¿î Çϸé executor´Â ÃÖÁ¾ÀûÀ¸·Î Á¾·áÇÕ´Ï´Ù¸¸, ±× ½ÃÁ¡¿¡¼­´Â ½ÇÇàÁßÀÇ È°¼ºÈ­µÈ ŽºÅ©³ª ½ÇÇàÀ» ´ë±âÁßÀÇ Å½ºÅ©´Â Á¸ÀçÇÏÁö ¾Ê°í, »õ·Î¿î ŽºÅ©¸¦ ¼Û½ÅÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

submit ¸Þ¼­µå´Â ½ÇÇàÀÇ Ãë¼Ò³ª ¿Ï·áÀÇ ´ë±â¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â Future¸¦ ÀÛ¼ºÇØ µ¹·ÁÁÖ´Â °ÍÀ¸·Î ±âÀú ¸Þ¼­µå Executor.execute(java.lang.Runnable)¸¦ È®ÀåÇÕ´Ï´Ù. invokeAny ¹× invokeAll ¸Þ¼­µå´Â º¸Åë Æí¸®¼ºÀÇ °¡Àå ³ôÀº Çü½ÄÀÇ ÀÏ°ý ½ÇÇàÀ» ½Ç½ÃÇØ, ŽºÅ©ÀÇ Ä÷º¼ÇÀ» ½ÇÇàÇØ, 1°³ ÀÌ»ó ¶Ç´Â ¸ðµç °ÍÀÌ ¿Ï·áÇÏ´Â °ÍÀ» ´ë±âÇÕ´Ï´Ù. ExecutorCompletionService Ŭ·¡½º¸¦, ÀÌ·¯ÇÑ ¸Þ¼­µåÀÇ Ä¿½ºÅ͸¶ÀÌÁî µÈ º¯ÇüÀÇ Ãâ·Â¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

Executors Ŭ·¡½º´Â ÀÌ ÆÐÅ°Áö·Î Á¦°øµÇ´Â executor ¼­ºñ½º¿ëÀÇ ÆÑÅ丮 ¸Þ¼­µå¸¦ Á¦°øÇÕ´Ï´Ù.

»ç¿ë¿¹

´ÙÀ½¿¡ ³ªÅ¸³»´Â ³×Æ®¿öÅ© ¼­ºñ½ºÀÇ °³·«¿¡¼­´Â ¿ä±¸°¡ Âø½ÅÇÏ´Â thread Ç® ¼­ºñ½º³»ÀÇ thread¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ°ÍÀº ±¸¼º ³¡³­ Executors.newFixedThreadPool(int) ÆÑÅ丮 ¸Þ¼­µå¸¦ »ç¿ëÇÕ´Ï´Ù.

 class NetworkService {
    private final ServerSocket serverSocket;
    private final ExecutorService pool;

    public NetworkService(int port, int poolSize) throws IOException {
      serverSocket = new ServerSocket(port);
      pool = Executors.newFixedThreadPool(poolSize);
    }
 
    public void serve() {
      try {
        for (;;) {
          pool.execute(new Handler(serverSocket.accept()));
        }
      } catch (IOException ex) {
        pool.shutdown();
      }
    }
  }

  class Handler implements Runnable {
    private final Socket socket;
    Handler(Socket socket) { this.socket = socket; }
    public void run() {
      // read and service request
    }
 }
 

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

¸Þ¼­µå °³¿ä
 boolean awaitTermination (long timeout, TimeUnit  unit)
          ¼Ë´Ù¿î ¿ä±¸ ÈÄ¿¡ ¸ðµç ŽºÅ©°¡ ½ÇÇàÀ» ¿Ï·áÇϴ ŸÀÓ ¾Æ¿ôÀÌ ¹ß»ýÇÏ´Â ÇöÀçÀÇ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â ¾î¶² °ÍÀΰ¡°¡ ÃÖÃÊ·Î ÀϾ ¶§±îÁö ºí·Ï ÇÕ´Ï´Ù.
<T> List <Future <T>>
invokeAll (Collection <Callable <T>> tasks)
          ÁöÁ¤µÈ ŽºÅ©¸¦ ½ÇÇàÇØ, Future ¸®½ºÆ®¸¦ ½ºÅ×ÀÌÅͽº¿Í ÇÔ²² µ¹·ÁÁÖ°í, ¸ðµç °ÍÀÌ ¿Ï·áÇÏ¸é °á°ú¸¦ ¸®ÅÏÇÕ´Ï´Ù.
<T> List <Future <T>>
invokeAll (Collection <Callable <T>> tasks, long timeout, TimeUnit  unit)
          ÁöÁ¤µÈ ŽºÅ©¸¦ ½ÇÇàÇØ, Future ¸®½ºÆ®¸¦ ½ºÅ×ÀÌÅͽº¿Í ÇÔ²² µ¹·ÁÁÖ°í, ¸ðµç °ÍÀÌ ¿Ï·áÇϵ簡 ¶Ç´Â ¸¶°¨ ½Ã°£ÀÌ µÉ±îÀÇ ¾ðÁ¨°¡ ºü¸¥ ½ÃÁ¡¿¡¼­ °á°ú¸¦ ¸®ÅÏÇÕ´Ï´Ù.
<T> T
invokeAny (Collection <Callable <T>> tasks)
          ÁöÁ¤µÈ ŽºÅ©¸¦ ½ÇÇàÇØ, Á¤»óÀûÀ¸·Î ¿Ï·áÇÑ Å½ºÅ©°¡ Á¸ÀçÇÏ´Â °æ¿ì´Â ±× °á°ú¸¦ (¿¹¿Ü¸¦ Throw ÇÏÁö ¾Ê°í ) ¸®ÅÏÇÕ´Ï´Ù.
<T> T
invokeAny (Collection <Callable <T>> tasks, long timeout, TimeUnit  unit)
          ÁöÁ¤µÈ ŽºÅ©¸¦ ½ÇÇàÇØ, ŸÀÓ ¾Æ¿ôÀÌ µÇ±â Àü¿¡ Á¤»óÀûÀ¸·Î ¿Ï·áÇÑ Å½ºÅ©°¡ Á¸ÀçÇÏ´Â °æ¿ì´Â ±× °á°ú¸¦ (¿¹¿Ü¸¦ Throw ÇÏÁö ¾Ê°í ) ¸®ÅÏÇÕ´Ï´Ù.
 boolean isShutdown ()
          ÀÌ executor°¡ ¼Ë´Ù¿î ÇßÀ» °æ¿ì, true¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 boolean isTerminated ()
          ¼Ë´Ù¿î¿¡ ÀÌ¾î ¸ðµç ŽºÅ©°¡ ¿Ï·áÇßÀ» °æ¿ì¿¡ true¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 void shutdown ()
          ¼ø¼­¿¡ µû¶ó ½ÇÇàµÇ´Â ¼Ë´Ù¿îÀ» °³½ÃÇÕ´Ï´Ù.
 List <Runnable > shutdownNow ()
          ½ÇÇàÁßÀÇ È°¼ºÈ­µÈ ŽºÅ© ¸ðµç Á¤Áö¸¦ ½ÃµµÇØ ´ë±âÁßÀÇ Å½ºÅ©ÀÇ Ã³¸®¸¦ Á¤ÁöÇØ, ½ÇÇàÀ» ´ë±âÇÏ°í ÀÖ´ø ŽºÅ©ÀÇ ¸®½ºÆ®¸¦ ¸®ÅÏÇÕ´Ï´Ù.
<T> Future <T>
submit (Callable <T> task)
          °ªÀ» µ¹·ÁÁÖ´Â ½ÇÇà ŽºÅ©¸¦ ¼Û½ÅÇØ, º¸·ùÁßÀÇ Å½ºÅ© °á°ú¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 Future <? > submit (Runnable  task)
          ½ÇÇà¿ëÀÇ Runnable ŽºÅ©¸¦ ¼Û½ÅÇØ, ±× ŽºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù.
<T> Future <T>
submit (Runnable  task, T result)
          ½ÇÇà¿ëÀÇ Runnable ŽºÅ©¸¦ ¼Û½ÅÇØ, ¿Ï·á½Ã·Î ÁöÁ¤µÈ °á°ú¸¦ µ¹·ÁÁִ ŽºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 
ÀÎÅÍÆäÀ̽º java.util.concurrent. Executor ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼­µå
execute
 

¸Þ¼­µåÀÇ »ó¼¼

shutdown

void shutdown()
¼ø¼­¿¡ µû¶ó ½ÇÇàµÇ´Â ¼Ë´Ù¿îÀ» °³½ÃÇÕ´Ï´Ù. ÀÌÀü¿¡ ¼Û½ÅµÈ ŽºÅ©°¡ ½ÇÇàµË´Ï´Ù¸¸, »õ·Î¿î ŽºÅ©´Â ¹Þ¾Æµé¿©ÁöÁö ¾Ê½À´Ï´Ù. ¼Ë´Ù¿î ÈÄ¿¡ È£ÃâÀ» ½ÇÇàÇصµ, È¿°ú´Â ¾ø½À´Ï´Ù.

¿¹¿Ü:
SecurityException - ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â »óȲÀ¸·Î ¼Ë´Ù¿îÀ» ½ÇÇàÇϸé, ÀÌ ExecutorService ÀÌ È£ÃâÇØ Ãø¿¡´Â º¯°æÀÌ Çã°¡µÇÁö ¾Ê´Â thread¸¦ Á¶ÀÛÇÒ ¼ö ÀÖ´Â °æ¿ì. ÀÌ°ÍÀº, RuntimePermission ("modifyThread")¸¦ º¸°ü À¯ÁöÇÏÁö ¾Ê´ÂÁö, ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkAccess ¸Þ¼­µå°¡ ¾×¼¼½º¸¦ °ÅºÎÇϱâ À§ÇØÀÌ´Ù

shutdownNow

List <Runnable > shutdownNow()
½ÇÇàÁßÀÇ È°¼ºÈ­µÈ ŽºÅ© ¸ðµç Á¤Áö¸¦ ½ÃµµÇØ ´ë±âÁßÀÇ Å½ºÅ©ÀÇ Ã³¸®¸¦ Á¤ÁöÇØ, ½ÇÇàÀ» ´ë±âÇÏ°í ÀÖ´ø ŽºÅ©ÀÇ ¸®½ºÆ®¸¦ ¸®ÅÏÇÕ´Ï´Ù.

½ÇÇàÁßÀÇ È°¼ºÈ­µÈ ŽºÅ© 󸮸¦ Á¤ÁöÇϱâ À§Çؼ­ ÃÖ¼±ÀÇ ³ë·ÂÀ» ÇÏ´Â °Í ÀÌ»óÀÇ º¸ÁõÀº ¾ø½À´Ï´Ù. ¿¹¸¦ µé¾î º¸Åë ÀÇ ±¸Çö¿¡¼­´Â Thread.interrupt()¸¦ °³ÀÔ½ÃÄÑ Ãë¼Ò¸¦ Çϱ⠶§¹®¿¡ ŽºÅ©°¡ ÀÎÅÍ·´Æ®¿¡ ´ëÇÑ ÀÀ´äÀ» ¸¶½ºÅ© ÇÏ´ÂÁö ½ÇÆÐÇϸé, ŽºÅ©°¡ Á¾·áÇÏÁö ¾Ê°Ô µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

¹Ýȯ°ª:
½ÇÇàÀÌ °³½ÃµÇÁö ¾Ê¾Ò´ø ŽºÅ©ÀÇ ¸®½ºÆ®
¿¹¿Ü:
SecurityException - ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â »óȲÀ¸·Î ¼Ë´Ù¿îÀ» ½ÇÇàÇϸé, ÀÌ ExecutorService ÀÌ È£ÃâÇØ Ãø¿¡´Â º¯°æÀÌ Çã°¡µÇÁö ¾Ê´Â thread¸¦ Á¶ÀÛÇÒ ¼ö ÀÖ´Â °æ¿ì. ÀÌ°ÍÀº, RuntimePermission ("modifyThread")¸¦ º¸°ü À¯ÁöÇÏÁö ¾Ê´ÂÁö, ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkAccess ¸Þ¼­µå°¡ ¾×¼¼½º¸¦ °ÅºÎÇϱâ À§ÇØÀÌ´Ù

isShutdown

boolean isShutdown()
ÀÌ executor°¡ ¼Ë´Ù¿î ÇßÀ» °æ¿ì, true¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
ÀÌ executor°¡ ¼Ë´Ù¿î ÇßÀ» °æ¿ì´Â true

isTerminated

boolean isTerminated()
¼Ë´Ù¿î¿¡ ÀÌ¾î ¸ðµç ŽºÅ©°¡ ¿Ï·áÇßÀ» °æ¿ì¿¡ true¸¦ ¸®ÅÏÇÕ´Ï´Ù. shutdown ¶Ç´Â shutdownNow°¡ ÃÖÃÊ·Î ºÒ·Á°¡ Áö ¾Ê´Â ÇÑ, isTerminated´Â °áÄÚ true·Î´Â µÇÁö ¾Ê½À´Ï´Ù.

¹Ýȯ°ª:
¼Ë´Ù¿î¿¡ ÀÌ¾î ¸ðµç ŽºÅ©°¡ ¿Ï·áÇßÀ» °æ¿ì¿¡ true

awaitTermination

boolean awaitTermination(long timeout,
                         TimeUnit  unit)
                         throws InterruptedException 
¼Ë´Ù¿î ¿ä±¸ ÈÄ¿¡ ¸ðµç ŽºÅ©°¡ ½ÇÇàÀ» ¿Ï·áÇϴ ŸÀÓ ¾Æ¿ôÀÌ ¹ß»ýÇÏ´Â ÇöÀçÀÇ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â ¾î¶² °ÍÀΰ¡°¡ ÃÖÃÊ·Î ÀϾ ¶§±îÁö ºí·Ï ÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
timeout - ´ë±âÇÏ´Â ÃÖÀå ½Ã°£
unit - timeout ÀμöÀÇ ½Ã°£ ´ÜÀ§
¹Ýȯ°ª:
ÀÌ executor°¡ Á¾·áµÇ´Â °æ¿ì´Â true, Á¾·áÀü¿¡ ŸÀÓ ¾Æ¿ôÀÌ °æ°úÇßÀ» °æ¿ì´Â false
¿¹¿Ü:
InterruptedException - ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì

submit

<T> Future <T> submit(Callable <T> task)
°ªÀ» µ¹·ÁÁÖ´Â ½ÇÇà ŽºÅ©¸¦ ¼Û½ÅÇØ, º¸·ùÁßÀÇ Å½ºÅ© °á°ú¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù.

ŽºÅ©ÀÇ ´ë±â¸¦ Áï½Ã ºí·Ï ÇÏ´Â °æ¿ì´Â result = exec.submit(aCallable). get(); Çü½Ä¿¡¼­ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÁÖ: Executors Ŭ·¡½º¿¡´Â Å©·ÎÀ𸦠´àÀº ´Ù¸¥ ÀÏ¹Ý °´Ã¼¸¦ º¯È¯ °¡´ÉÇÑ ¸Þ¼­µå ¼¼Æ® (¿¹¸¦ µé¾î, PrivilegedAction¸¦ ¼Û½Å °¡´ÉÇÑ Callable Çü½ÄÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ´Ù)°¡ Æ÷ÇԵ˴ϴÙ.

ÆĶó¹ÌÅÍ:
task - ¼Û½ÅÇϴ ŽºÅ©
¹Ýȯ°ª:
ŽºÅ©ÀÇ º¸·ù ¿Ï·á¸¦ ³ªÅ¸³»´Â Future
¿¹¿Ü:
RejectedExecutionException - ŽºÅ©ÀÇ ½ÇÇàÀ» ½ºÄÉÁÙ ÇÒ ¼ö ¾ø´Â °æ¿ì
NullPointerException - ŽºÅ©°¡ nullÀÎ °æ¿ì

submit

<T> Future <T> submit(Runnable  task,
                     T result)
½ÇÇà¿ëÀÇ Runnable ŽºÅ©¸¦ ¼Û½ÅÇØ, ¿Ï·á½Ã·Î ÁöÁ¤µÈ °á°ú¸¦ µ¹·ÁÁִ ŽºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
task - ¼Û½ÅÇϴ ŽºÅ©
result - µ¹·ÁÁÖ´Â °á°ú
¹Ýȯ°ª:
ŽºÅ©ÀÇ º¸·ù ¿Ï·á¸¦ ³ªÅ¸³»´Â Future. ±× get() ¸Þ¼­µå´Â ¿Ï·á½Ã·Î ÁöÁ¤µÈ °á°ú¸¦ µ¹·ÁÁØ´Ù
¿¹¿Ü:
RejectedExecutionException - ŽºÅ©ÀÇ ½ÇÇàÀ» ½ºÄÉÁÙ ÇÒ ¼ö ¾ø´Â °æ¿ì
NullPointerException - ŽºÅ©°¡ nullÀÎ °æ¿ì

submit

Future <? > submit(Runnable  task)
½ÇÇà¿ëÀÇ Runnable ŽºÅ©¸¦ ¼Û½ÅÇØ, ±× ŽºÅ©¸¦ ³ªÅ¸³»´Â Future¸¦ ¸®ÅÏÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
task - ¼Û½ÅÇϴ ŽºÅ©
¹Ýȯ°ª:
º¸·ù »óÅÂÀÇ Å½ºÅ© ¿Ï·á¸¦ ³ªÅ¸³»´Â Future. ±× get() ¸Þ¼­µå´Â ¿Ï·á½Ã¿¡ nullÀ» µ¹·ÁÁØ´Ù
¿¹¿Ü:
RejectedExecutionException - ŽºÅ©ÀÇ ½ÇÇàÀ» ½ºÄÉÁÙ ÇÒ ¼ö ¾ø´Â °æ¿ì
NullPointerException - ŽºÅ©°¡ nullÀÎ °æ¿ì

invokeAll

<T> List <Future <T>> invokeAll(Collection <Callable <T>> tasks)
                          throws InterruptedException 
ÁöÁ¤µÈ ŽºÅ©¸¦ ½ÇÇàÇØ, Future ¸®½ºÆ®¸¦ ½ºÅ×ÀÌÅͽº¿Í ÇÔ²² µ¹·ÁÁÖ°í, ¸ðµç °ÍÀÌ ¿Ï·áÇÏ¸é °á°ú¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¸®ÅÏµÈ ¸®½ºÆ®ÀÇ °¢ ¿ä¼Ò¿¡ ´ëÇؼ­ Done´Â true°¡ µË´Ï´Ù. ¡¸¿Ï·áÇß´Ù¡¹Å½ºÅ©´Â º¸Åë ÀÇ ¹æ¹ý ¶Ç´Â ¿¹¿Ü¸¦ Throw ÇÏ´Â °ÍÀ¸·Î Á¾·áÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ Á¶ÀÛÀÇ ÁøÇàÁßÀ¸·Î ÁöÁ¤µÈ Ä÷º¼ÇÀÌ º¯°æµÇ¾úÀ» °æ¿ì, ÀÌ ¸Þ¼­µåÀÇ °á°ú´Â Á¤ÀǵÇÁö ¾Ê½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
tasks - ŽºÅ©ÀÇ Ä÷º¼Ç
¹Ýȯ°ª:
ŽºÅ©¸¦ ³ªÅ¸³»´Â Futures ¸®½ºÆ®. ¸®½ºÆ®ÀÇ Â÷·Ê´Â ÁöÁ¤µÈ ŽºÅ© ¸®½ºÆ®ÀÇ ¹Ýº¹ÀÚ¿¡ ÀÇÇØ »ý¼ºµÇ´Â Â÷·Ê¿Í °°°í, °¢ ŽºÅ©´Â ¿Ï·áÇÊÀÌ´Ù
¿¹¿Ü:
InterruptedException - ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì. ÀÌ °æ¿ì ¹Ì¿Ï·áÀÇ Å½ºÅ©´Â »èÁ¦µÈ´Ù
NullPointerException - ŽºÅ© ¶Ç´Â ±× ¸î°³ÀÇ ¿ä¼Ò°¡ nullÀÎ °æ¿ì
RejectedExecutionException - ¸î°³ÀÇ Å½ºÅ©ÀÇ ½ÇÇàÀ» ½ºÄÉÁÙ ÇÒ ¼ö ¾ø´Â °æ¿ì

invokeAll

<T> List <Future <T>> invokeAll(Collection <Callable <T>> tasks,
                              long timeout,
                              TimeUnit  unit)
                          throws InterruptedException 
ÁöÁ¤µÈ ŽºÅ©¸¦ ½ÇÇàÇØ, Future ¸®½ºÆ®¸¦ ½ºÅ×ÀÌÅͽº¿Í ÇÔ²² µ¹·ÁÁÖ°í, ¸ðµç °ÍÀÌ ¿Ï·áÇϵ簡 ¶Ç´Â ¸¶°¨ ½Ã°£ÀÌ µÉ±îÀÇ ¾ðÁ¨°¡ ºü¸¥ ½ÃÁ¡¿¡¼­ °á°ú¸¦ ¸®ÅÏÇÕ´Ï´Ù. ¸®ÅÏµÈ ¸®½ºÆ®ÀÇ °¢ ¿ä¼Ò¿¡ ´ëÇؼ­ Done´Â true°¡ µË´Ï´Ù. ¸®ÅÏµÈ ½ÃÁ¡¿¡¼­´Â ¿Ï·áÇÏ°í ÀÖÁö ¾Ê´Â ŽºÅ©´Â »èÁ¦µË´Ï´Ù. ¡¸¿Ï·áÇß´Ù¡¹Å½ºÅ©´Â º¸Åë ÀÇ ¹æ¹ý ¶Ç´Â ¿¹¿Ü¸¦ Throw ÇÏ´Â °ÍÀ¸·Î Á¾·áÇÏ°í ÀÖ½À´Ï´Ù. ÀÌ Á¶ÀÛÀÇ ÁøÇàÁßÀ¸·Î ÁöÁ¤µÈ Ä÷º¼ÇÀÌ º¯°æµÇ¾úÀ» °æ¿ì, ÀÌ ¸Þ¼­µåÀÇ °á°ú´Â Á¤ÀǵÇÁö ¾Ê½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
tasks - ŽºÅ©ÀÇ Ä÷º¼Ç
timeout - ´ë±âÇÏ´Â ÃÖÀå ½Ã°£
unit - timeout ÀμöÀÇ ½Ã°£ ´ÜÀ§
¹Ýȯ°ª:
ŽºÅ©¸¦ ³ªÅ¸³»´Â Futures ¸®½ºÆ®. ¸®½ºÆ®ÀÇ Â÷·Ê´Â ÁöÁ¤µÈ ŽºÅ© ¸®½ºÆ®ÀÇ ¹Ýº¹ÀÚ¿¡ ÀÇÇØ »ý¼ºµÇ´Â Â÷·Ê¿Í °°°Ô µÈ´Ù. Á¶ÀÛÀÌ Å¸ÀÓ ¾Æ¿ô ÇÏÁö ¾Ê¾Ò´ø °æ¿ì, °¢ ŽºÅ©´Â ¿Ï·áÇÑ´Ù. ŸÀÓ ¾Æ¿ô ÇßÀ» °æ¿ì´Â ŽºÅ©ÀÇ ÀϺδ ¿Ï·áÇÏÁö ¾Ê´Â´Ù
¿¹¿Ü:
InterruptedException - ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì. ÀÌ °æ¿ì ¹Ì¿Ï·áÀÇ Å½ºÅ©´Â »èÁ¦µÈ´Ù
NullPointerException - ŽºÅ©, ±× ¿ä¼ÒÀÇ ¾ðÁ¨°¡ ¶Ç´Â ´ÜÀ§°¡ nullÀÎ °æ¿ì
RejectedExecutionException - ¸î°³ÀÇ Å½ºÅ©ÀÇ ½ÇÇàÀ» ½ºÄÉÁÙ ÇÒ ¼ö ¾ø´Â °æ¿ì

invokeAny

<T> T invokeAny(Collection <Callable <T>> tasks)
            throws InterruptedException,

                   ExecutionException 
ÁöÁ¤µÈ ŽºÅ©¸¦ ½ÇÇàÇØ, Á¤»óÀûÀ¸·Î ¿Ï·áÇÑ Å½ºÅ©°¡ Á¸ÀçÇÏ´Â °æ¿ì´Â ±× °á°ú¸¦ (¿¹¿Ü¸¦ Throw ÇÏÁö ¾Ê°í ) ¸®ÅÏÇÕ´Ï´Ù. º¸Åë ¶Ç´Â ¿¹¿Ü¸¦ ¼ö¹ÝÇÏ´Â º¹±Í½Ã¿¡ ¹Ì¿Ï·áÀÇ Å½ºÅ©´Â »èÁ¦µË´Ï´Ù. ÀÌ Á¶ÀÛÀÌ ÁøÇàÁßÀ¸·Î ÁöÁ¤µÈ Ä÷º¼ÇÀÌ º¯°æµÇ¾úÀ» °æ¿ìÀÇ, ÀÌ ¸Þ¼­µåÀÇ °á°ú´Â Á¤ÀǵÇÁö ¾Ê½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
tasks - ŽºÅ©ÀÇ Ä÷º¼Ç
¹Ýȯ°ª:
¸î°³ÀÇ Å½ºÅ©¿¡ ÀÇÇØ ¸®ÅÏµÈ °á°ú
¿¹¿Ü:
InterruptedException - ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì
NullPointerException - ŽºÅ© ¶Ç´Â ±× ¸î°³ÀÇ ¿ä¼Ò°¡ nullÀÎ °æ¿ì
IllegalArgumentException - ŽºÅ©°¡ ºñ¾îÀÖ´Â °æ¿ì
ExecutionException - Á¤»óÀûÀ¸·Î ¿Ï·áÇÑ Å½ºÅ©°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì
RejectedExecutionException - ŽºÅ©ÀÇ ½ÇÇàÀ» ½ºÄÉÁÙ ÇÒ ¼ö ¾ø´Â °æ¿ì

invokeAny

<T> T invokeAny(Collection <Callable <T>> tasks,
                long timeout,
                TimeUnit  unit)
            throws InterruptedException,

                   ExecutionException,

                   TimeoutException 
ÁöÁ¤µÈ ŽºÅ©¸¦ ½ÇÇàÇØ, ŸÀÓ ¾Æ¿ôÀÌ µÇ±â Àü¿¡ Á¤»óÀûÀ¸·Î ¿Ï·áÇÑ Å½ºÅ©°¡ Á¸ÀçÇÏ´Â °æ¿ì´Â ±× °á°ú¸¦ (¿¹¿Ü¸¦ Throw ÇÏÁö ¾Ê°í ) ¸®ÅÏÇÕ´Ï´Ù. º¸Åë ¶Ç´Â ¿¹¿Ü¸¦ ¼ö¹ÝÇÏ´Â º¹±Í½Ã¿¡ ¹Ì¿Ï·áÀÇ Å½ºÅ©´Â »èÁ¦µË´Ï´Ù. ÀÌ Á¶ÀÛÀÌ ÁøÇàÁßÀ¸·Î ÁöÁ¤µÈ Ä÷º¼ÇÀÌ º¯°æµÇ¾úÀ» °æ¿ìÀÇ, ÀÌ ¸Þ¼­µåÀÇ °á°ú´Â Á¤ÀǵÇÁö ¾Ê½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
tasks - ŽºÅ©ÀÇ Ä÷º¼Ç
timeout - ´ë±âÇÏ´Â ÃÖÀå ½Ã°£
unit - timeout ÀμöÀÇ ½Ã°£ ´ÜÀ§
¹Ýȯ°ª:
¸î°³ÀÇ Å½ºÅ©¿¡ ÀÇÇØ ¸®ÅÏµÈ °á°ú
¿¹¿Ü:
InterruptedException - ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ì
NullPointerException - ŽºÅ©, ±× ¿ä¼ÒÀÇ ¾ðÁ¨°¡ ¶Ç´Â ´ÜÀ§°¡ nullÀÎ °æ¿ì
TimeoutException - ¸î°³ÀÇ Å½ºÅ©°¡ Á¤»óÀûÀ¸·Î ¿Ï·áÇϱâ Àü¿¡ ÁöÁ¤µÈ ŸÀÓ ¾Æ¿ô ½Ã°£ÀÌ °æ°úÇßÀ» °æ¿ì
ExecutionException - Á¤»óÀûÀ¸·Î ¿Ï·áÇÑ Å½ºÅ©°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì
RejectedExecutionException - ŽºÅ©ÀÇ ½ÇÇàÀ» ½ºÄÉÁÙ ÇÒ ¼ö ¾ø´Â °æ¿ì

JavaTM 2 Platform
Standard Ed. 5.0

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