public class ScheduledThreadPoolExecutor extends ThreadPoolExecutor implements ScheduledExecutorService
ThreadPoolExecutorã§ãã è€æ°ã®ã¯ãŒã«ãŒã»ã¹ã¬ãããå¿
èŠãªå ŽåããŸãã¯ãã®ã¯ã©ã¹ãæ¡åŒµããThreadPoolExecutorã«ããã«æè»æ§ãŸãã¯æ©èœãå¿
èŠãªå Žåã¯ãTimerããããã®ã¯ã©ã¹ã䜿çšããããšããèŠãããŸãã
é å»¶ã¿ã¹ã¯ã¯æå¹ã«ãªããšããã«å®è¡ãããŸãããæå¹ã«ãªã£ãããšãã€éå§ããããã«ã€ããŠã¯ããªã¢ã«ã¿ã€ã ä¿èšŒããããŸããã ãŸã£ããåãå®è¡æéã«ã¹ã±ãžã¥ãŒã«èšå®ãããã¿ã¹ã¯ã¯ãéä¿¡ã®å å ¥ãå åºã(FIFO)é ã«æå¹ã«ãªããŸãã
éä¿¡ãããã¿ã¹ã¯ããå®è¡ãããåã«åãæ¶ãããå Žåã¯ãå®è¡ãæå¶ãããŸãã ããã©ã«ãã§ã¯ããã®ãããªåãæ¶ãããã¿ã¹ã¯ã¯ããã®é
å»¶æéãçµéãããŸã§ã¯ãŒã¯ã»ãã¥ãŒããèªåçã«ã¯åé€ãããŸããã ããã«ãããããã«æ€æ»ãç£èŠãè¡ãããšãå¯èœã«ãªããŸãããåãæ¶ãããã¿ã¹ã¯ãç¡å¶éã«ä¿æãããå¯èœæ§ããããŸãã ãããåé¿ããã«ã¯ãsetRemoveOnCancelPolicy(boolean)ãtrueã«èšå®ããŸããããã«ãããã¿ã¹ã¯ãåæ¶ãæã«ãã ã¡ã«ã¯ãŒã¯ã»ãã¥ãŒããåé€ãããŸãã
scheduleAtFixedRateãŸãã¯scheduleWithFixedDelayã䜿çšããŠã¹ã±ãžã¥ãŒã«ãããã¿ã¹ã¯ãé£ç¶çã«å®è¡ããŠãããªãŒããŒã©ããã¯çºçããŸããã åå®è¡ã¯ç°ãªãã¹ã¬ããã«ãã£ãŠå®è¡ãããå¯èœæ§ããããŸããã以åã®å®è¡ã®å¹æã¯ä»¥éã®å®è¡ã®å¹æã®åã«çºçããŸãã
ãã®ã¯ã©ã¹ã¯ThreadPoolExecutorããç¶æ¿ãããŸãããç¶æ¿ããããã¥ãŒãã³ã°ã»ã¡ãœããã®ããã€ãã¯ãã®ã¯ã©ã¹ã«ãšã£ãŠæå¹ã§ã¯ãããŸããã ç¹ã«ãããã¯corePoolSizeã¹ã¬ãããšã¢ã³ããŠã³ã圢åŒã®ãã¥ãŒã䜿çšããåºå®ãµã€ãºã®ããŒã«ãšããŠæ©èœãããããmaximumPoolSizeã調æŽããŠã广ã¯ãããŸããã ããã«ãcorePoolSizeã0ã«èšå®ããããallowCoreThreadTimeOutã䜿çšãããããŠããããŒã«ã«å®è¡å¯èœã«ãªã£ãã¿ã¹ã¯ãåŠçããããã®ã¹ã¬ããããªãç¶æ
ã®ãŸãŸã«ãªãå¯èœæ§ããããããã»ãšãã©å¹æã¯ãããŸããã
æ¡åŒµã®ããŒã: ãã®ã¯ã©ã¹ã¯executeã¡ãœãããšsubmitã¡ãœããããªãŒããŒã©ã€ãããŠãã¿ã¹ã¯åäœã®é
å»¶ãšã¹ã±ãžã¥ãŒãªã³ã°ãå¶åŸ¡ããããã®å
éšScheduledFutureãªããžã§ã¯ããçæããŸãã æ©èœãä¿è·ããããã«ããµãã¯ã©ã¹ã§ãããã®ã¡ãœããããã以äžãªãŒããŒã©ã€ãããå Žåã¯ãã¹ãŒããŒã¯ã©ã¹ã»ããŒãžã§ã³ãåŒã³åºãå¿
èŠããããŸããããã«ãããã¿ã¹ã¯ã®è¿œå ã®ã«ã¹ã¿ãã€ãºãå®è³ªçã«ç¡å¹ã«ãªããŸãã ãã ãããã®ã¯ã©ã¹ã§ã¯ã代æ¿ã®protectedæ¡åŒµã¡ãœããdecorateTask (RunnableãšCallableããšã«1ã€ã®ããŒãžã§ã³)ãæäŸããŸããããã¯ãexecuteãsubmitãscheduleãscheduleAtFixedRateãããã³scheduleWithFixedDelayã§å
¥åãããã³ãã³ããå®è¡ããããã«äœ¿çšãããå
·è±¡ã¿ã¹ã¯åã®ã«ã¹ã¿ãã€ãºã«äœ¿çšã§ããŸãã ããã©ã«ãã§ã¯ãScheduledThreadPoolExecutorã¯FutureTaskãæ¡åŒµããã¿ã¹ã¯åã䜿çšããŸãã ãã ãæ¬¡ã®ãããªåœ¢åŒã®ãµãã¯ã©ã¹ã䜿çšããŠã倿ŽãŸãã¯çœ®æã§ããŸãã
public class CustomScheduledExecutor extends ScheduledThreadPoolExecutor {
static class CustomTask<V> implements RunnableScheduledFuture<V> { ... }
protected <V> RunnableScheduledFuture<V> decorateTask(
Runnable r, RunnableScheduledFuture<V> task) {
return new CustomTask<V>(r, task);
}
protected <V> RunnableScheduledFuture<V> decorateTask(
Callable<V> c, RunnableScheduledFuture<V> task) {
return new CustomTask<V>(c, task);
}
// ... add constructors, etc.
}ThreadPoolExecutor.AbortPolicy, ThreadPoolExecutor.CallerRunsPolicy, ThreadPoolExecutor.DiscardOldestPolicy, ThreadPoolExecutor.DiscardPolicy| ã³ã³ã¹ãã©ã¯ã¿ | 説æ |
|---|---|
ScheduledThreadPoolExecutor(int corePoolSize) |
æå®ãããã³ã¢ã»ããŒã«ã»ãµã€ãºã§ãæ°ãã
ScheduledThreadPoolExecutorãäœæããŸãã |
ScheduledThreadPoolExecutor(int corePoolSize, RejectedExecutionHandler handler) |
æå®ãããåæãã©ã¡ãŒã¿ã䜿ã£ãŠãæ°ããScheduledThreadPoolExecutorãäœæããŸãã
|
ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory) |
æå®ãããåæãã©ã¡ãŒã¿ã䜿ã£ãŠãæ°ãã
ScheduledThreadPoolExecutorãäœæããŸãã |
ScheduledThreadPoolExecutor(int corePoolSize, ThreadFactory threadFactory, RejectedExecutionHandler handler) |
æå®ãããåæãã©ã¡ãŒã¿ã䜿ã£ãŠãæ°ããScheduledThreadPoolExecutorãäœæããŸãã
|
| 修食åãšå | ã¡ãœãã | 説æ |
|---|---|---|
protected <V> RunnableScheduledFuture<V> |
decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task) |
åŒåºãå¯èœã¬ã€ã¢ãŠããå®è¡ããããã«äœ¿çšããã¿ã¹ã¯ã倿ŽãŸãã¯çœ®æããŸãã
|
protected <V> RunnableScheduledFuture<V> |
decorateTask(Runnable runnable, RunnableScheduledFuture<V> task) |
runnableãå®è¡ããããã«äœ¿çšããã¿ã¹ã¯ã倿ŽãŸãã¯çœ®æããŸãã
|
void |
execute(Runnable command) |
èŠæ±ãããé
å»¶ããŒãã§ã
commandãå®è¡ããŸãã |
boolean |
getContinueExistingPeriodicTasksAfterShutdownPolicy() |
æ¢åã®å®æçãªã¿ã¹ã¯ã®å®è¡ãç¶ç¶ãããã©ããã«é¢ããããªã·ãŒãååŸããŸãããã®executorã§
shutdownãå®è¡ããããšãã§ãååŸããŸãã |
boolean |
getExecuteExistingDelayedTasksAfterShutdownPolicy() |
æ¢åã®é
å»¶ã¿ã¹ã¯ãå®è¡ãããã©ããã«é¢ããããªã·ãŒãååŸããŸãããã®executorã§
shutdownãå®è¡ããããšãã§ãååŸããŸãã |
BlockingQueue<Runnable> |
getQueue() |
ãã®executorã§äœ¿çšããã¿ã¹ã¯ã»ãã¥ãŒãè¿ããŸãã
|
boolean |
getRemoveOnCancelPolicy() |
åãæ¶ãããã¿ã¹ã¯ãåæ¶ãæã«ã¯ãŒã¯ã»ãã¥ãŒããããã«åé€ãããã©ããã«é¢ããããªã·ãŒãååŸããŸãã
|
<V> ScheduledFuture<V> |
schedule(Callable<V> callable, long delay, TimeUnit unit) |
æå®ãããé
å»¶åŸã«æå¹ã«ãªãScheduledFutureãäœæããŠå®è¡ããŸãã
|
ScheduledFuture<?> |
schedule(Runnable command, long delay, TimeUnit unit) |
æå®ãããé
å»¶åŸã«æå¹ã«ãªãåçºçãªã¢ã¯ã·ã§ã³ãäœæããŠå®è¡ããŸãã
|
ScheduledFuture<?> |
scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) |
æå®ãããåæé
å»¶ã®çµéåŸã«ã¯ãããŠæå¹ã«ãªãããã®åŸã¯æå®ãããæéããšã«æå¹ã«ãªã宿çãªã¢ã¯ã·ã§ã³ãäœæããŠå®è¡ããŸããã€ãŸãå®è¡ã¯
initialDelayåŸã«éå§ããããã®åŸã¯initialDelay+periodãinitialDelay+2 * periodãšããããã«ãªããŸãã |
ScheduledFuture<?> |
scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) |
æå®ãããåæé
å»¶ã®çµéåŸã«ã¯ãããŠæå¹ã«ãªãããã®åŸã¯å®è¡ã®çµäºåŸããæ¬¡ã®éå§ãŸã§ã®æå®ã®é
å»¶ããšã«æå¹ã«ãªã宿çãªã¢ã¯ã·ã§ã³ãäœæããŠå®è¡ããŸãã
|
void |
setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value) |
æ¢åã®å®æçãªã¿ã¹ã¯ã®å®è¡ãç¶ç¶ãããã©ããã«é¢ããããªã·ãŒãèšå®ããŸãããã®executorã§
shutdownãå®è¡ããããšãã§ãèšå®ããŸãã |
void |
setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value) |
æ¢åã®é
å»¶ã¿ã¹ã¯ãå®è¡ãããã©ããã«é¢ããããªã·ãŒãèšå®ããŸãããã®executorã§
shutdownãå®è¡ããããšãã§ãååŸããŸãã |
void |
setRemoveOnCancelPolicy(boolean value) |
åãæ¶ãããã¿ã¹ã¯ãåæ¶ãæã«ã¯ãŒã¯ã»ãã¥ãŒããããã«åé€ãããã©ããã«é¢ããããªã·ãŒãèšå®ããŸãã
|
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ãè¿ããŸãã
|
afterExecute, allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, beforeExecute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, terminated, toStringinvokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskForclone, equals, getClass, hashCode, notify, notifyAll, wait, wait, waitawaitTermination, invokeAll, invokeAll, invokeAny, invokeAny, isShutdown, isTerminatedpublic ScheduledThreadPoolExecutor(int corePoolSize)
ScheduledThreadPoolExecutorãäœæããŸããcorePoolSize - allowCoreThreadTimeOutãèšå®ãããŠããªãããããã¢ã€ãã«ã§ãã£ãŠãããŒã«å
ã«ç¶æãããã¹ã¬ããã®æ°IllegalArgumentException - corePoolSize < 0ã®å Žåpublic ScheduledThreadPoolExecutor(int corePoolSize,
ThreadFactory threadFactory)
ScheduledThreadPoolExecutorãäœæããŸããcorePoolSize - allowCoreThreadTimeOutãèšå®ãããŠããªãããããã¢ã€ãã«ã§ãã£ãŠãããŒã«å
ã«ç¶æãããã¹ã¬ããã®æ°threadFactory - executorãæ°ããã¹ã¬ãããäœæãããšãã«äœ¿çšãããã¡ã¯ããªIllegalArgumentException - corePoolSize < 0ã®å ŽåNullPointerException - threadFactoryãnullã§ããå Žåpublic ScheduledThreadPoolExecutor(int corePoolSize,
RejectedExecutionHandler handler)
corePoolSize - allowCoreThreadTimeOutãèšå®ãããŠããªãããããã¢ã€ãã«ã§ãã£ãŠãããŒã«å
ã«ç¶æãããã¹ã¬ããã®æ°handler - ã¹ã¬ããã®å¢çããã³ãã¥ãŒã®å®¹éã«éãããããå®è¡ããããã¯ããããšãã«äœ¿çšãããã³ãã©IllegalArgumentException - corePoolSize < 0ã®å ŽåNullPointerException - handlerãnullã§ããå Žåpublic ScheduledThreadPoolExecutor(int corePoolSize,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
corePoolSize - allowCoreThreadTimeOutãèšå®ãããŠããªãããããã¢ã€ãã«ã§ãã£ãŠãããŒã«å
ã«ç¶æãããã¹ã¬ããã®æ°threadFactory - executorãæ°ããã¹ã¬ãããäœæãããšãã«äœ¿çšãããã¡ã¯ããªhandler - ã¹ã¬ããã®å¢çããã³ãã¥ãŒã®å®¹éã«éãããããå®è¡ããããã¯ããããšãã«äœ¿çšãããã³ãã©IllegalArgumentException - corePoolSize < 0ã®å ŽåNullPointerException - threadFactoryãŸãã¯handlerãnullã®å Žåprotected <V> RunnableScheduledFuture<V> decorateTask(Runnable runnable, RunnableScheduledFuture<V> task)
V - ã¿ã¹ã¯ã®çµæã®årunnable - éä¿¡ãããRunnabletask - Runnableãå®è¡ããããã«äœæãããã¿ã¹ã¯protected <V> RunnableScheduledFuture<V> decorateTask(Callable<V> callable, RunnableScheduledFuture<V> task)
V - ã¿ã¹ã¯ã®çµæã®åcallable - éä¿¡ãããCallabletask - Callableãå®è¡ããããã«äœæãããã¿ã¹ã¯public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit)
ScheduledExecutorServicescheduleãã€ã³ã¿ãã§ãŒã¹ScheduledExecutorServicecommand - å®è¡ããã¿ã¹ã¯delay - çŸåšããé
å»¶å®è¡ãŸã§ã®æéunit - delayãã©ã¡ãŒã¿ã®æéåäœget()ã¡ãœããã¯å®äºæã«nullãè¿ãRejectedExecutionException - ã¿ã¹ã¯ã®å®è¡ãã¹ã±ãžã¥ãŒã«ã§ããªãå ŽåNullPointerException - ã³ãã³ããnullã®å Žåpublic <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit)
ScheduledExecutorServicescheduleãã€ã³ã¿ãã§ãŒã¹ScheduledExecutorServiceV - åŒåºãå¯èœã¿ã¹ã¯ã®çµæã®åcallable - å®è¡ãã颿°delay - çŸåšããé
å»¶å®è¡ãŸã§ã®æéunit - delayãã©ã¡ãŒã¿ã®æéåäœRejectedExecutionException - ã¿ã¹ã¯ã®å®è¡ãã¹ã±ãžã¥ãŒã«ã§ããªãå ŽåNullPointerException - åŒåºãå¯èœã¬ã€ã¢ãŠããnullã®å Žåpublic ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
ScheduledExecutorServiceinitialDelayåŸã«éå§ããããã®åŸã¯initialDelay+periodãinitialDelay+2 * periodãšããããã«ãªããŸãã ã¿ã¹ã¯ãå®è¡ããŠäŸå€ãçºçãããšã以éã®å®è¡ã¯ææ¢ãããŸãã ããã§ãªãå Žåã¯ãexecutorã®åãæ¶ããŸãã¯çµäºã«ãã£ãŠã®ã¿ã¿ã¹ã¯ã¯çµäºããŸãã ãã®ã¿ã¹ã¯ãå®è¡ããã®ã«æå®ã®æé(period)ããé·ãæéããããå Žåã以éã®å®è¡ã¯é
ããŠéå§ãããããšããããŸããã䞊è¡ããŠå®è¡ã¯ãããŸããã scheduleAtFixedRateãã€ã³ã¿ãã§ãŒã¹ScheduledExecutorServicecommand - å®è¡ããã¿ã¹ã¯initialDelay - æåã®é
å»¶å®è¡ãŸã§ã®æéperiod - é£ç¶ããå®è¡ã®ééunit - initialDelayããã³periodãã©ã¡ãŒã¿ã®æéåäœget()ã¡ãœããã¯åæ¶ãæã«äŸå€ãã¹ããŒããRejectedExecutionException - ã¿ã¹ã¯ã®å®è¡ãã¹ã±ãžã¥ãŒã«ã§ããªãå ŽåNullPointerException - ã³ãã³ããnullã®å ŽåIllegalArgumentException - periodã0以äžã§ããå Žåpublic ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)
ScheduledExecutorServicescheduleWithFixedDelayãã€ã³ã¿ãã§ãŒã¹ScheduledExecutorServicecommand - å®è¡ããã¿ã¹ã¯initialDelay - æåã®é
å»¶å®è¡ãŸã§ã®æédelay - å®è¡ã®çµäºåŸããæ¬¡ã®éå§ãŸã§ã®é
å»¶unit - initialDelayããã³delayãã©ã¡ãŒã¿ã®æéåäœget()ã¡ãœããã¯åæ¶ãæã«äŸå€ãã¹ããŒããRejectedExecutionException - ã¿ã¹ã¯ã®å®è¡ãã¹ã±ãžã¥ãŒã«ã§ããªãå ŽåNullPointerException - ã³ãã³ããnullã®å ŽåIllegalArgumentException - delayã0以äžã§ããå Žåpublic void execute(Runnable command)
commandãå®è¡ããŸãã ããã«ã¯schedule(command, 0, anyUnit)ãšåçã®å¹æããããŸãã ãã¥ãŒã®æ€æ»ãshutdownNowã«ãã£ãŠè¿ããããªã¹ãã®æ€æ»ã§ã¯ãcommandèªäœã§ã¯ãªããé
å»¶ã0ã®ScheduledFutureã«ã¢ã¯ã»ã¹ããããšã«æ³šæããŠãã ããã
ScheduledFutureãªããžã§ã¯ãã䜿çšããçµæãšããŠãcommandãçªç¶çµäºããå Žåã§ãã2çªç®ã®ThrowableåŒæ°ãnullã«ããŠafterExecuteãåžžã«åŒã³åºãããŸãã 代ããã«ããã®ãããªã¿ã¹ã¯ã«ãã£ãŠã¹ããŒãããThrowableã¯ãFuture.get()ã䜿çšããŠååŸã§ããŸãã
executeãã€ã³ã¿ãã§ãŒã¹Executorexecuteãã¯ã©ã¹ThreadPoolExecutorcommand - å®è¡ããã¿ã¹ã¯RejectedExecutionException - RejectedExecutionHandlerã®å€æã§ãexecutorãã·ã£ããããŠã³ããããããã¿ã¹ã¯ãå®è¡ã®ããã«åãå
¥ããããšãã§ããªãå ŽåNullPointerException - commandãnullã§ããå Žåpublic Future<?> submit(Runnable task)
ExecutorServicegetã¡ãœããã¯ãæ£åžžã«å®äºããæç¹ã§nullãè¿ããŸãã submitãã€ã³ã¿ãã§ãŒã¹ExecutorServicesubmitãã¯ã©ã¹AbstractExecutorServicetask - éä¿¡ããã¿ã¹ã¯RejectedExecutionException - ã¿ã¹ã¯ã®å®è¡ãã¹ã±ãžã¥ãŒã«ã§ããªãå ŽåNullPointerException - ã¿ã¹ã¯ãnullã®å Žåpublic <T> Future<T> submit(Runnable task, T result)
ExecutorServicegetã¡ãœããã¯ãæ£åžžã«å®äºããæç¹ã§æå®ãããçµæãè¿ããŸãã submitãã€ã³ã¿ãã§ãŒã¹ExecutorServicesubmitãã¯ã©ã¹AbstractExecutorServiceT - çµæã®åtask - éä¿¡ããã¿ã¹ã¯result - è¿ãçµæRejectedExecutionException - ã¿ã¹ã¯ã®å®è¡ãã¹ã±ãžã¥ãŒã«ã§ããªãå ŽåNullPointerException - ã¿ã¹ã¯ãnullã®å Žåpublic <T> Future<T> submit(Callable<T> task)
ExecutorServicegetã¡ãœããã¯ãæ£åžžã«å®äºããæç¹ã§ã¿ã¹ã¯ã®çµæãè¿ããŸãã
ã¿ã¹ã¯ã®åŸ
æ©ããã ã¡ã«ãããã¯ããå Žåã¯ãresult = exec.submit(aCallable).get();ã®åœ¢åŒã®æ§ç¯ã䜿çšã§ããŸãã
ããŒã: Executorsã¯ã©ã¹ã«ã¯ãã¯ããŒãžã£ã«äŒŒãã»ãã®äžè¬ãªããžã§ã¯ãã倿ã§ããã¡ãœããã»ã»ãããå«ãŸããŸããããšãã°ãPrivilegedActionãCallable圢åŒã«å€æããŠãéä¿¡å¯èœã«ããããšãã§ããŸãã
submitãã€ã³ã¿ãã§ãŒã¹ExecutorServicesubmitãã¯ã©ã¹AbstractExecutorServiceT - ã¿ã¹ã¯ã®çµæã®åtask - éä¿¡ããã¿ã¹ã¯RejectedExecutionException - ã¿ã¹ã¯ã®å®è¡ãã¹ã±ãžã¥ãŒã«ã§ããªãå ŽåNullPointerException - ã¿ã¹ã¯ãnullã®å Žåpublic void setContinueExistingPeriodicTasksAfterShutdownPolicy(boolean value)
shutdownãå®è¡ããããšãã§ãèšå®ããŸãã ãã®å Žåããããã®ã¿ã¹ã¯ãçµäºããã®ã¯ãshutdownNowã®å®è¡æãããã§ã«ã·ã£ããããŠã³ãå®è¡ããããªã·ãŒãfalseã«èšå®ããããšã«éãããŸãã ãã®å€ã¯ããã©ã«ãã§falseã§ãã value - trueã®å Žåã¯ã·ã£ããããŠã³åŸã«ç¶è¡ãããã以å€ã®å Žåã¯ç¶è¡ããªãgetContinueExistingPeriodicTasksAfterShutdownPolicy()public boolean getContinueExistingPeriodicTasksAfterShutdownPolicy()
shutdownãå®è¡ããããšãã§ãååŸããŸãã ãã®å Žåããããã®ã¿ã¹ã¯ãçµäºããã®ã¯ãshutdownNowã®å®è¡æãããã§ã«ã·ã£ããããŠã³ãå®è¡ããããªã·ãŒãfalseã«èšå®ããããšã«éãããŸãã ãã®å€ã¯ããã©ã«ãã§falseã§ãã truesetContinueExistingPeriodicTasksAfterShutdownPolicy(boolean)public void setExecuteExistingDelayedTasksAfterShutdownPolicy(boolean value)
shutdownãå®è¡ããããšãã§ãååŸããŸãã ãã®å Žåããããã®ã¿ã¹ã¯ãçµäºããã®ã¯ãshutdownNowã®å®è¡æãããã§ã«ã·ã£ããããŠã³ãå®è¡ããããªã·ãŒãfalseã«èšå®ããããšã«éãããŸãã ãã®å€ã¯ããã©ã«ãã§trueã§ãã value - trueã®å Žåã¯ã·ã£ããããŠã³åŸã«å®è¡ãããã以å€ã®å Žåã¯å®è¡ããªãgetExecuteExistingDelayedTasksAfterShutdownPolicy()public boolean getExecuteExistingDelayedTasksAfterShutdownPolicy()
shutdownãå®è¡ããããšãã§ãååŸããŸãã ãã®å Žåããããã®ã¿ã¹ã¯ãçµäºããã®ã¯ãshutdownNowã®å®è¡æãããã§ã«ã·ã£ããããŠã³ãå®è¡ããããªã·ãŒãfalseã«èšå®ããããšã«éãããŸãã ãã®å€ã¯ããã©ã«ãã§trueã§ãã truesetExecuteExistingDelayedTasksAfterShutdownPolicy(boolean)public void setRemoveOnCancelPolicy(boolean value)
falseã§ãã value - trueã®å Žåã¯åæ¶ãæã«åé€ãããã以å€ã®å Žåã¯åé€ããªããgetRemoveOnCancelPolicy()public boolean getRemoveOnCancelPolicy()
falseã§ãã truesetRemoveOnCancelPolicy(boolean)public void shutdown()
ãã®ã¡ãœããã¯ã以åã«éä¿¡ãããã¿ã¹ã¯ãå®è¡ãå®äºããã®ãåŸ
æ©ããŸããã ãããå®è¡ããã«ã¯ãawaitTerminationã䜿ã£ãŠãã ããã
ExecuteExistingDelayedTasksAfterShutdownPolicyãfalseã«èšå®ãããŠããå Žåãé
å»¶æéãçµéããŠããªãæ¢åã®é
å»¶ã¿ã¹ã¯ã¯åãæ¶ãããŸãã ãŸããContinueExistingPeriodicTasksAfterShutdownPolicyãtrueã«èšå®ãããŠããªãããããæ¢åã®å®æçãªã¿ã¹ã¯ã®ä»¥åŸã®å®è¡ã¯åãæ¶ãããŸãã
shutdownãã€ã³ã¿ãã§ãŒã¹ExecutorServiceshutdownãã¯ã©ã¹ThreadPoolExecutorSecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããç¶æ³ã§ãã®ExecutorServiceã®ã·ã£ããããŠã³ãå®è¡ãããšãåŒåºãåŽã«ã¯å€æŽãèš±å¯ããªãã¹ã¬ãããæäœã§ããå Žåãããã¯ãRuntimePermission("modifyThread")ãä¿æããªãããã»ãã¥ãªãã£ã»ãããŒãžã£ã®checkAccessã¡ãœãããã¢ã¯ã»ã¹ãæåŠããããã§ãããpublic List<Runnable> shutdownNow()
ãã®ã¡ãœããã¯ãã¢ã¯ãã£ãã«å®è¡äžã®ã¿ã¹ã¯ãçµäºããã®ãåŸ
æ©ããŸããã ãããå®è¡ããã«ã¯ãawaitTerminationã䜿ã£ãŠãã ããã
å®è¡äžã®ã¢ã¯ãã£ããªã¿ã¹ã¯åŠçã忢ããããã«æåã®åªåãããããšä»¥äžã®ä¿èšŒã¯ãããŸããã ãã®å®è£
ã§ã¯ãThread.interrupt()ãä»ããŠã¿ã¹ã¯ãåãæ¶ããããå²ã蟌ã¿ã«å¯Ÿããå¿çã«å€±æããã¿ã¹ã¯ã¯çµäºããªããªãå¯èœæ§ããããŸãã
shutdownNowãã€ã³ã¿ãã§ãŒã¹ExecutorServiceshutdownNowãã¯ã©ã¹ThreadPoolExecutorScheduledFutureã§ãããexecuteã䜿çšããŠéä¿¡ãããã¿ã¹ã¯ãå«ãŸããããããã®ã¿ã¹ã¯ã¯ã¹ã±ãžã¥ãŒãªã³ã°çšã§ãããé
å»¶ã0ã®ScheduledFutureã®åºç€ãšããŠäœ¿çšãããã SecurityException - ã»ãã¥ãªãã£ã»ãããŒãžã£ãååšããç¶æ³ã§ãã®ExecutorServiceã®ã·ã£ããããŠã³ãå®è¡ãããšãåŒåºãåŽã«ã¯å€æŽãèš±å¯ããªãã¹ã¬ãããæäœã§ããå Žåãããã¯ãRuntimePermission("modifyThread")ãä¿æããªãããã»ãã¥ãªãã£ã»ãããŒãžã£ã®checkAccessã¡ãœãããã¢ã¯ã»ã¹ãæåŠããããã§ãããpublic BlockingQueue<Runnable> getQueue()
ScheduledFutureã§ãããexecuteã䜿çšããŠéä¿¡ãããã¿ã¹ã¯ãå«ãŸããããããã®ã¿ã¹ã¯ã¯ã¹ã±ãžã¥ãŒãªã³ã°çšã§ãããé
å»¶ã0ã®ScheduledFutureã®åºç€ãšããŠäœ¿çšãããã ãã®ãã¥ãŒã«å¯Ÿããå埩åŠçã§ã¯ãã¿ã¹ã¯ãå®è¡é åºã§ãã©ããŒã¹ãããããšã¯ä¿èšŒãããŸããã getQueueãã¯ã©ã¹ThreadPoolExecutor ãã°ãŸãã¯æ©èœãéä¿¡
詳现ãªAPIãªãã¡ã¬ã³ã¹ããã³éçºè
ããã¥ã¡ã³ãã«ã€ããŠã¯ãJava SEã®ããã¥ã¡ã³ããåç
§ããŠãã ããã ãã®ããã¥ã¡ã³ãã«ã¯ãæŠå¿µçãªæŠèŠãçšèªã®å®çŸ©ãåé¿æ¹æ³ãæå¹ãªã³ãŒãäŸãªã©ã®ãéçºè
ã察象ã«ãããã詳现ãªèª¬æãå«ãŸããŠããŸãã
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyãåç
§ããŠãã ããã