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ÀÎ °æ¿ì
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ
ÂüÁ¶ÇϽʽÿÀ.