JavaTM 2 Platform
Standard Ed. 5.0

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

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

public interface Executor

¼Û½ÅµÈ Runnable ŽºÅ©¸¦ ½ÇÇàÇÏ´Â °´Ã¼. ÀÌ ÀÎÅÍÆäÀ̽º´Â ŽºÅ© ¼Û½ÅÀ» °¢ ŽºÅ©ÀÇ ½ÇÇà ¹æ½Ä (threadÀÇ »ç¿ëÀ̳ª ½ºÄÉÁÙ¸µÀÇ »ó¼¼µîÀ» Æ÷ÇÔÇÑ´Ù)À¸·ÎºÎÅÍ ºÐ¸®ÇÏ´Â ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù. º¸Åë, Executor´Â ¸í½ÃÀûÀ¸·Î thread¸¦ ÀÛ¼ºÇÏ´Â ´ë½Å¿¡ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¾î °¢ task set ¸¶´Ù new Thread(new(RunnableTask())). start()¸¦ È£ÃâÇÏ´Â ´ë½Å¿¡ ÀÌÇϸ¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.


Executor executor = anExecutor;
executor.execute(new RunnableTask1());
executor.execute(new RunnableTask2());
...
´Ù¸¸, Executor ÀÎÅÍÆäÀ̽º¿¡¼­´Â ½ÇÇàÀÌ ºñµ¿±âÀÎ °ÍÀÌ ¾ö¹ÐÇÏ°Ô ¿ä±¸µÇ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ¹«¾ùº¸´Ù ´Ü¼øÇÑ ÄÉÀ̽º¿¡¼­´Â executor´Â ¼Û½ÅµÈ ŽºÅ©¸¦ È£ÃâÇØ ¿·ÀÇ thread³»¿¡¼­ Áï½Ã ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

class DirectExecutor implements Executor {
public void execute(Runnable r) {
r.run();
}
}
º¸´Ù ÀϹÝÀûÀ¸·Î´Â ŽºÅ©´Â È£ÃâÇØ ¿·ÀÇ thread ÀÌ¿ÜÀÇ thread·Î ½ÇÇàµË´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â executor´Â °¢ ŽºÅ©¿ëÀÇ »õ·Î¿î thread¸¦ »ý¼ºÇÕ´Ï´Ù.

class ThreadPerTaskExecutor implements Executor {
public void execute(Runnable r) {
new Thread(r). start();
}
}
´Ù¼öÀÇ Executor ±¸ÇöÀº ŽºÅ©¸¦ ½ºÄÉÁÙ ÇÏ´Â ¹æ¹ý ¹× ½Ã±â¿¡ °üÇØ¼­ ¾î¶°ÇÑ Á¦ÇÑÀ» ºÎ°úÇÕ´Ï´Ù. ÀÌÇÏ¿¡ executor°¡ ŽºÅ©ÀÇ ¼Û½ÅÀ» Á÷·ÄÈ­ÇØ 2¹øÂ°ÀÇ executor¿¡ °Ç³×ÁÖ´Â º¹ÇÕ executor¸¦ ³ªÅ¸³À´Ï´Ù.

class SerialExecutor implements Executor {
final Queue<Runnable> tasks = new LinkedBlockingQueue<Runnable>();
final Executor executor;
Runnable active;

SerialExecutor(Executor executor) {
this.executor = executor;
}

public synchronized void execute(final Runnable r) {
tasks.offer(new Runnable() {
public void run() {
try {
r.run();
} finally {
scheduleNext();
}
}
});
if (active == null) {
scheduleNext();
}
}

protected synchronized void scheduleNext() {
if ((active = tasks.poll()) ! = null) {
executor.execute(active);
}
}
}
ÀÌ ÆÐŰÁö·Î Á¦°øµÇ´Â Executor ±¸ÇöÀº º¸´Ù È®À强ÀÇ ³ôÀº ExecutorService¸¦ ±¸ÇöÇÕ´Ï´Ù. ThreadPoolExecutor Ŭ·¡½º´Â È®Àå °¡´ÉÇÑ thread Ç® ±¸ÇöÀ» Á¦°øÇÕ´Ï´Ù. Executors Ŭ·¡½º´Â ÀÌ·¯ÇÑ Executor¿ëÀÇ Æí¸®¼ºÀÇ ³ôÀº ÆÑÅ丮 ¸Þ¼­µå¸¦ Á¦°øÇÕ´Ï´Ù.

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

¸Þ¼­µå °³¿ä
 void execute (Runnable  command)
          Àå·¡°¡ ÀÖ´Â ½ÃÁ¡¿¡¼­ ÁöÁ¤µÈ Ä¿¸àµå¸¦ ½ÇÇàÇÕ´Ï´Ù.
 

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

execute

void execute(Runnable  command)
Àå·¡°¡ ÀÖ´Â ½ÃÁ¡¿¡¼­ ÁöÁ¤µÈ Ä¿¸àµå¸¦ ½ÇÇàÇÕ´Ï´Ù. Ä¿¸àµå´Â »õ·Î¿î thread³»¿¡¼­µµ, Ç® µÈ thread³»¿¡¼­µµ, È£ÃâÃøÀÇ thread³»¿¡¼­µµ, Executor ±¸Çö¿¡ ÀÇÇØ ¼öÀÇ¿¡ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
command - ½ÇÇà °¡´ÉÇÑ Å½ºÅ©
¿¹¿Ü:
RejectedExecutionException - ŽºÅ©ÀÇ ½ÇÇàÀ» ¹Þ¾ÆµéÀÏ ¼ö°¡ ¾ø´Â °æ¿ì
NullPointerException - Ä¿¸àµå°¡ nullÀÎ °æ¿ì

JavaTM 2 Platform
Standard Ed. 5.0

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