|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: »óÀÚ | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
java.lang.Objectjava.util.concurrent.AbstractExecutorService
java.util.concurrent.ThreadPoolExecutor
public class ThreadPoolExecutor
¸¹Àº °æ¿ì, Ç® µÈ º¹¼öÀÇ threadÀÇ ¾î´ÀÂÊÀ̵çÀ» »ç¿ëÇØ, ¼Û½ÅµÈ °¢ ŽºÅ©¸¦ ½ÇÇàÇÏ´Â ExecutorService
. ÀϹÝÀûÀ¸·ÎExecutors
ÆÑÅ丮 ¸Þ¼µå¸¦ »ç¿ëÇØ ±¸¼ºµË´Ï´Ù.
thread Ç®Àº ŽºÅ©¸¶´ÙÀÇ È£ÃâÀÇ ¿À¹öÇìµå¸¦ °¨¼Ò½ÃŰ´Â °ÍÀ¸·Î ´ë·®ÀÇ ºñµ¿±â ŽºÅ©¸¦ ½ÇÇàÇÒ ¶§ÀÇ ÆÛÆ÷¸Õ½º¸¦ °³¼±ÇØ, ŽºÅ©ÀÇ Ä÷º¼ÇÀ» ½ÇÇàÇÒ ¶§¿¡ ¼ÒºñµÇ´Â threadµîÀÇ ÀÚ¿øÀ» Á¦ÇÑ ¹× °ü¸®ÇÏ´Â ¼ö´ÜÀ» Á¦°øÇÏ´Â °ÍÀ¸·Î ´Ù¸¥ 2°³ÀÇ ¹®Á¦¿¡ ´ëÀÀÇÕ´Ï´Ù. °¢ ThreadPoolExecutor µµ, ¿Ï·á ŽºÅ©ÀÇ ¼öµîÀÇ ¸î°³ÀÇ ±âº»ÀûÀÎ Åë°è¸¦ °ü¸®ÇÕ´Ï´Ù.
±¤¹üÀ§ÇÑ ÄÁÅØ½ºÆ®
À¸·Î À¯¿ëÇϱ⠶§¹®¿¡,
ÀÌ Å¬·¡½º´Â Á¶Á¤ °¡´ÉÇÑ ´Ù¼öÀÇ ÆÄ¶ó¹ÌÅÍ ¹× È®Àå ±â´É ÈÅÀ» Á¦°øÇÕ´Ï´Ù. ´Ù¸¸, ÇÁ·Î±×·¡¸Ó´Â º¸´Ù Æí¸®¼ºÀÇ ³ôÀº Executors
ÆÑÅ丮 ¸Þ¼µåÀÎ Executors.newCachedThreadPool()
(¾È ¹Ù¿îµå Çü½ÄÀÇ thread Ç®, ÀÚµ¿ thread Àç»ýÀ» Æ÷ÇÔÇÑ´Ù), Executors.newFixedThreadPool(int)
(°íÁ¤ »çÀÌÁîÀÇ thread Ç®) ¹× Executors.newSingleThreadExecutor()
(´Üµ¶ÀÇ ¹é±×¶ó¿îµå thread)¸¦ »ç¿ëÇÏ´Â °ÍÀÌ Ãßõ µÇ°í ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¸Þ¼µå´Â ÀϹÝÀûÀ¸·Î »ç¿ëµÇ´Â ´ëºÎºÐÀÇ ½Ã³ª¸®¿À¿¡ ¸ÂÃß¾î ¹Ì¸® ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù. ±×·¸Áö ¾ÊÀº °æ¿ì´Â ´ÙÀ½¿¡ ³ªÅ¸³»´Â °¡À̵忡 µû¶ó ÀÌ Å¬·¡½º¸¦ ¼öµ¿À¸·Î ±¸¼º ¹× Æ©´×ÀÇÇØ ÁÖ¼¼¿ä.
getCorePoolSize()
¸¦
ÂüÁ¶) ¹× maximumPoolSize (getMaximumPoolSize()
¸¦
ÂüÁ¶)°¡ ºÎ°úÇÏ´Â Á¦ÇÑ¿¡ µû¶ó, Ç® »çÀÌÁî (getPoolSize()
¸¦
ÂüÁ¶)¸¦ ÀÚµ¿Á¶Á¤ ÇÕ´Ï´Ù. »õ·Î¿î ŽºÅ©°¡ execute(java.lang.Runnable)
¸Þ¼µå³»¿¡¼ ¼Û½ÅµÇ¾î corePoolSize threadº¸´Ù ½ÇÇàÁßÀÇ ¼ö°¡ ÀûÀº °æ¿ì, ´Ù¸¥ ¿öÄ«½º·¹µå°¡ÀÚ½Ä
µ¹ »óÅÂÀÇ °æ¿ì¿¡¼µµ, ¿ä±¸¸¦ ó¸®Çϱâ À§Çؼ »õ·Î¿î thread°¡ ÀÛ¼ºµË´Ï´Ù. ½ÇÇàÁßÀÇ ¼ö°¡ corePoolSize threadº¸´Ù ¸¹¾Æ, maximumPoolSize threadº¸´Ù ÀûÀº °æ¿ì, Å¥°¡ °¡µæ µÇ¾î ÀÖ´Â °æ¿ì¿¡°Ô¸¸ »õ·Î¿î thread°¡ ÀÛ¼ºµË´Ï´Ù. corePoolSize ¹× maximumPoolSize¸¦ °°°Ô ¼³Á¤ÇÏ´Â °ÍÀ¸·Î °íÁ¤ »çÀÌÁîÀÇ thread Ç®À» ÀÛ¼ºÇÕ´Ï´Ù. maximumPoolSizeÀ» Integer.MAX_VALUE µîÀÇ ¿øÄ¢ÀûÀ¸·Î ¹«Á¦ÇÑÇÑ °ªÀ¸·Î ¼³Á¤ÇÏ´Â °ÍÀ¸·Î Ç®ÀÌ ÀÓÀÇÀÇ ¼öÀÇ µ¿½Ã ŽºÅ©¸¦ ¹Þ¾ÆµéÀÌ´Â °ÍÀÌ °¡´ÉÇÏ°Ô µË´Ï´Ù. º¸Åë, ÄÚ¾î ¹× ÃÖ´ë Ç® »çÀÌÁî´Â ±¸Ãà½Ã¿¡°Ô¸¸ ¼³Á¤µË´Ï´Ù¸¸, setCorePoolSize(int)
¹× setMaximumPoolSize(int)
¸¦
»ç¿ëÇØ µ¿ÀûÀ¸·Î º¯°æÇÏ´Â Àϵµ °¡´ÉÇÕ´Ï´Ù. prestartCoreThread()
³ª prestartAllCoreThreads()
¸Þ¼µå¸¦ »ç¿ëÇØ µ¿ÀûÀ¸·Î ¿À¹ö¶óÀ̵å(override) µÇ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ThreadFactory
¸¦
»ç¿ëÇØ ÀÛ¼ºµË´Ï´Ù. ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì´Â Executors.defaultThreadFactory()
¸¦
»ç¿ëÇØ, ÀÛ¼ºÇÏ´Â thread ¸ðµç °ÍÀÌ °°Àº ThreadGroup
,
NORM_PRIORITY ¿ì¼±µµ ¹× ºñdemon »óŸ¦ º¸°ü À¯ÁöÇϵµ·Ï ÇÕ´Ï´Ù. ´Ù¸¥ ThreadFactory¸¦ ÁöÁ¤ÇÏ´Â °ÍÀ¸·Î threadÀÇ À̸§, thread ±×·ì, ¿ì¼± ¼øÀ§, demon »óŵîÀ» º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. newThread·Î
ºÎÅÍ nullÀÌ µ¹·ÁÁÖ°íÁ³À» ¶§¿¡ ¿ä±¸µÈ ThreadFactory·Î
threadÀÇ ÀÛ¼º¿¡ ½ÇÆÐÇßÀ» °æ¿ì, executor´Â ¼ÓÇàÇÕ´Ï´Ù¸¸, ŽºÅ©¸¦ ½ÇÇàÇÒ ¼ö ¾øÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. getKeepAliveTime(java.util.concurrent.TimeUnit)
¸¦
ÂüÁ¶)¸¦ ÃʰúÇϸé, ÃʰúÇÑ thread´Â Á¾·áÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ
Ç®ÀÌ È°¼ºÈ
»ç¿ëµÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì¿¡
ÀÚ¿øÀÇ ¼Òºñ¸¦ ¾ïÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù
. Ç®ÀÌ ³ªÁß¿¡º¸´Ù Ȱ¼ºÈ
µÇ¸é, »õ·Î¿î thread°¡ ÀÛ¼ºµË´Ï´Ù. ÀÌ ÆÄ¶ó¹ÌÅÍ´Â setKeepAliveTime(long, java.util.concurrent.TimeUnit)
¸Þ¼µå¸¦ »ç¿ëÇØ µ¿ÀûÀ¸·Î º¯°æÇÏ´Â Àϵµ °¡´ÉÇÕ´Ï´Ù. Long.MAX_VALUE TimeUnit.NANOSECONDS
Ä¡¸¦ »ç¿ëÇϸé,ÀÚ½Ä
µ¹ »óÅÂÀÇ thread°¡ ¼Ë´Ù¿îÀü¿¡ Á¾·áÇÏÁö ¾Ê°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. BlockingQueue
¸¦
»ç¿ëÇØ, ¼Û½Å ³¡³ ŽºÅ©¸¦ Àü¼Û ¹× º¸°ü À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Å¥¸¦ »ç¿ëÇϸé, Ç®ÀÇ »çÀÌÁî º¯°æÀÌ ´ëÈÀûÀ¸·Î 󸮵˴ϴÙ.
SynchronousQueue
´Â
thread¸¦ µû·Î º¸°ü À¯ÁöÇÏ´Â ÀÏ ¾øÀÌ thread¿¡ °Ç³×ÁØ´Ù. ¿©±â¼, °ð¹Ù·Î ½ÇÇà °¡´ÉÇÑ thread°¡ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì, ŽºÅ©¸¦ Å¥¿¡ ³ÖÀ¸·Á°í ÇÏ´Â ½Ãµµ´Â ½ÇÆÐÇϱâ À§ÇØ, »õ·Î¿î thread°¡ ÀÛ¼ºµÈ´Ù. ÀÌ Á¤Ã¥´Â ³»ºÎ
Á¸¼ºÀ» º¸°ü À¯ÁöÇÒ °¡´É¼ºÀÌ ÀÖ´Â ¿ä±¸ ¼¼Æ®¸¦ ó¸®ÇÒ ¶§, ·Ï ¾÷À» ȸÇÇÇÑ´Ù. º¸Åë, Á÷Á¢ ÇÚµå ¿ÀÇÁ¿¡¼´Â »õ·Ó°Ô ¼Û½ÅµÇ´Â ŽºÅ©°¡ °ÅºÎµÇ´Â °ÍÀ» ȸÇÇÇϱâ À§Çؼ ¾È ¹Ù¿îµå Çü½ÄÀÇ maximumPoolSizes°¡ ÇÊ¿äÇÏ°Ô µÈ´Ù. ÇÑÆí, ÀÌ °æ¿ì
ÀüüÀûÀ¸·Î ó¸® ´É·ÂÀ» ³Ñ´Â ¼Óµµ·Î Ä¿¸àµå°¡ Â÷·ÊÂ÷·Ê·Î µµÂøÇϸé, ¾È ¹Ù¿îµå Çü½ÄÀÇ thread°¡ Ä¿Áú °¡´É¼ºÀÌ ÀÖ´Ù LinkedBlockingQueue
µî)¸¦ »ç¿ëÇϸé, ¸ðµç corePoolSize thread°¡ Busy »óÅ¿¡ ÀÖ´Â °æ¿ì¿¡ »õ·Î¿î ŽºÅ©°¡ Å¥¿¡ ³Ö¾îÁø´Ù. ÀÌ ¶§¹®¿¡
corePoolSize¸¦ ³Ñ´Â thread´Â ÀÛ¼ºµÇÁö ¾Ê´Â´Ù (µû¶ó¼, maximumPoolSize
°ªÀº ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê´Â´Ù). À̰ÍÀÌ ÀûÀýÇÑ °ÍÀº Web ÆäÀÌÁö ¼¹ö³» µî, °¢ ŽºÅ©°¡ ´Ù¸¥ ŽºÅ©·ÎºÎÅÍ ¿ÏÀüÇÏ°Ô µ¶¸³Çϰí ÀÖ±â À§Çؼ
ŽºÅ©°¡ ´Ù¸¥ ŽºÅ©ÀÇ ½ÇÇà¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â °ÍÀÌ ¾ø´Â °æ¿ìÀÌ´Ù. ÀÌ Å¥ ½ºÅ¸ÀÏÀº ÀϽÃÀûÀ¸·Î ±ÞÁõÇÑ ¿ä±¸¸¦ ó¸®ÇÏ´Â °æ¿ì µî¿¡ À¯¿ëÇÏÁö¸¸, ÀüüÀûÀ¸·Î ó¸® ´É·ÂÀ» ³Ñ´Â ¼Óµµ·Î Ä¿¸àµå°¡ Â÷·ÊÂ÷·Ê·Î µµÂøÇϸé, ¾È ¹Ù¿îµå Çü½ÄÀÇ ÀÛ¾÷ Å¥°¡ Ä¿Áú °¡´É¼ºÀÌ ÀÖ´Ù ArrayBlockingQueue
µî)´Â ÇÑÁ¤µÈ maximumPoolSizes¿Í
ÇÔ²² »ç¿ëÇϸé ÀÚ¿øÀÇ °í°¥À» ¸·´Â °æ¿ì¿¡ µµ¿òÀÌ µÇÁö¸¸, Æ©´×À̳ª Á¦¾î°¡ °ï¶õÇÏ°Ô µÉ °¡´É¼ºÀÌ ÀÖ´Ù. Å¥ »çÀÌÁî¿Í ÃÖ´ë Ç® »çÀÌÁî´Â Æ®·¹ÀÌµå ¿ÀÇÁÀÇ °ü°è¿¡ ÀÖ´Ù. ´ë±Ô¸ð Å¥¿Í ¼Ò±Ô¸ðÀÇ Ç®À» »ç¿ëÇϸé, CPU
»ç¿ë, OS
ÀÚ¿ø ¹× ÄÁÅØ½ºÆ®
º¯È¯ÀÇ ¿À¹öÇìµå¸¦ °¡´ÉÇÑ ÇÑ ÁÙÀÏ ¼ö°¡ ÀÖÁö¸¸, ±× ¶§¹®¿¡(À§ÇØ) throughput°¡ ÀúÇÏÇÒ °¡´É¼ºÀÌ ÀÖ´Ù. ŽºÅ©°¡ ºó¹øÇÏ°Ô ºí·Ï ÇÏ´Â (¿¹¸¦ µé¾î
ÀÔÃâ·ÂÀÌ Á¦ÇѵȴÙ) °æ¿ì, ´Ù¸¥ ¹æ¹ýÀ¸·Î Çã°¡ÇÏ´Â °Íº¸´Ùµµ ¸¹Àº thread¿¡ ´ëÇØ¼ ½Ã½ºÅÛÀÌ ½Ã°£À» ½ºÄÉÁÙ ÇÒ ¼ö ÀÖ´Ù. º¸Åë, ¼Ò±Ô¸ðÀÇ Å¥¸¦ »ç¿ëÇϸé, ´ë·®ÀÇ Ç® »çÀÌÁî°¡ ÇÊ¿äÇÏ°Ô µÈ´Ù. À̰Ϳ¡ ÀÇÇØ
CPU
Busy »óŰ¡ ¸¹¾ÆÁöÁö¸¸, ¼ö¶ô ºÒ°¡ÀÇ ½ºÄÉÁÙ¸µ ¿À¹öÇìµå¿¡ Á¶¿ìÇÒ °¡´É¼ºÀÌ Àֱ⠶§¹®¿¡
¿ª½Ã throughput°¡ ÀúÇÏÇÑ´Ù execute(java.lang.Runnable)
¸Þ¼µå³»¿¡ ¼Û½ÅµÈ »õ·Î¿î ŽºÅ©´Â ¡¸°ÅºÎ¡¹µË´Ï´Ù. ¾î´À ÂÊÀÇ °æ¿ìµµ, execute ¸Þ¼µå´Â RejectedExecutionHandler
RejectedExecutionHandler.rejectedExecution(java.lang.Runnable, java.util.concurrent.ThreadPoolExecutor)
¸Þ¼µå¸¦ È£ÃâÇÕ´Ï´Ù. ´ÙÀ½ÀÇ 4°³ÀÇ Á¤Àǰ¡ ³¡³ Çڵ鷯 Á¤Ã¥°¡ Á¦°øµË´Ï´Ù.
ThreadPoolExecutor.AbortPolicy
¿¡¼´Â °ÅºÎµÇ¸é, Çڵ鷯´Â ½ÇÇà½Ã RejectedExecutionException
¸¦
Throw ÇÑ´ÙThreadPoolExecutor.CallerRunsPolicy
¿¡¼´Â execute ÀÚü¸¦ È£ÃâÇÏ´Â thread°¡ ŽºÅ©¸¦ ½ÇÇàÇÑ´Ù. À̰Ϳ¡ ÀÇÇØ
´Ü¼øÇÑ Çǵå¹é Á¦¾î ¸ÞÄ«´ÏÁòÀÌ Á¦°øµÇ¾î °á°úÀûÀ¸·Î »õ·Î¿î ŽºÅ©ÀÇ ¼Û½Å ·¹ÀÌÆ®°¡ ÀúÇÏÇÑ´Ù ThreadPoolExecutor.DiscardPolicy
¿¡¼´Â ½ÇÇà ºÒ°¡´ÉÇÑ Å½ºÅ©´Â ´ÜÁö »èÁ¦µÈ´Ù ThreadPoolExecutor.DiscardOldestPolicy
¿¡¼´Â executor°¡ ¼Ë´Ù¿î Çϰí ÀÖÁö ¾Ê´Â °æ¿ì, ÀÛ¾÷ Å¥ÀÇ ¼±µÎ¿¡ Àִ ŽºÅ©°¡ »èÁ¦µÇ¾î ½ÇÇàÀÌ ÀçÂ÷ ½ÃµµµÈ´Ù (ÀçÂ÷ ½ÇÆÐÇÒ °¡´É¼ºµµ ÀÖ¾î, ±× °æ¿ì´Â À̰ÍÀÌ ¹Ýº¹ÇØÁø´Ù) RejectedExecutionHandler
Ŭ·¡½º¸¦ Á¤ÀÇ ¹× »ç¿ëÇÏ´Â Àϵµ °¡´ÉÇÕ´Ï´Ù. ÀÌ °æ¿ì
ƯÈ÷ Á¤Ã¥°¡ ƯÁ¤ÀÇ ¿ë·® ¶Ç´Â Å¥À× Á¤Ã¥¿¡ ¼¸¸ µ¿ÀÛÇϵµ·Ï ¼³°èµÇ°í ÀÖ´Â °æ¿ì´Â ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù. beforeExecute(java.lang.Thread, java.lang.Runnable)
¹× afterExecute(java.lang.Runnable, java.lang.Throwable)
¸Þ¼µå¸¦ Á¦°øÇÕ´Ï´Ù. À̰ÍÀº °¢ ŽºÅ©ÀÇ ½ÇÇà ÀüÈÄ¿¡ È£ÃâÇÕ´Ï´Ù. À̰͵éÀº ThreadLocals
ÀçÃʱâÈ, Åë°èÀÇ ¼öÁý, ·Î±× ¿£Æ®¸®ÀÇ Ãß°¡µîÀÇ, ½ÇÇà ȯ°æÀÇ Á¶ÀÛ¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, terminated()
¸Þ¼µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇØ, Executor°¡ ¿ÏÀüÇÏ°Ô Á¾·áÇÑ ÈÄ¿¡ ½ÇÇàÇÒ Çʿ䰡 Àִ Ư¼öÇÑ Ã³¸®¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÈÅ ¸Þ¼µå ¶Ç´Â ÄÝ¹é ¸Þ¼µå°¡ ¿¹¿Ü¸¦ Throw Çϸé, ³»ºÎÀÇ ¿öÄ«½º·¹µå°¡ ½ÇÆÐÇØ Áï½Ã Á¾·áÇÕ´Ï´Ù.
getQueue()
¸Þ¼µå¸¦ »ç¿ëÇϸé, °¨½Ã ¹× µð¹ö±× ¸ñÀûÀ¸·Î ÀÛ¾÷ Å¥¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´Ù¸¥ ¸ñÀûÀ¸·Î ÀÌ ¸Þ¼µå¸¦ »ç¿ëÇÏ´Â °ÍÀº °¡´ÉÇÑ ÇÑ ÇÇÇØ ÁÖ¼¼¿ä. Å¥¿¡ ³Ö¾îÁø ´ë·®ÀÇ Å½ºÅ©°¡ »èÁ¦µÇ¾úÀ» °æ¿ì, Á¦°øµÇ´Â 2°³ÀÇ ¸Þ¼µå remove(java.lang.Runnable)
¹× purge()
¸¦
±â¾ï ¿µ¿ªÀÇ Àç¿ø½ÃÁö¿ø¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. È®Àå ±â´ÉÀÇ ¿¹. ÀÌ Å¬·¡½ºÀÇ È®Àå ±â´ÉÀÇ ´ëºÎºÐÀº 1°³ ÀÌ»óÀÇ protected ÈÅ ¸Þ¼µå¸¦ ¿À¹ö¶óÀ̵å(override) ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¿¹´Â ´Ü¼øÇÑ ÀϽÃÁ¤Áö/Àç°³ ±â´ÉÀ» Ãß°¡ÇÏ´Â ¼ºê Ŭ·¡½ºÀÔ´Ï´Ù.
class PausableThreadPoolExecutor extends ThreadPoolExecutor { private boolean isPaused; private ReentrantLock pauseLock = new ReentrantLock(); private Condition unpaused = pauseLock.newCondition(); public PausableThreadPoolExecutor(...) { super(...); } protected void beforeExecute(Thread t, Runnable r) { super.beforeExecute(t, r); pauseLock.lock(); try { while (isPaused) unpaused.await(); } catch(InterruptedException ie) { t.interrupt(); } finally { pauseLock.unlock(); } } public void pause() { pauseLock.lock(); try { isPaused = true; } finally { pauseLock.unlock(); } } public void resume() { pauseLock.lock(); try { isPaused = false; unpaused.signalAll(); } finally { pauseLock.unlock(); } } }
Áßø(Nested) Ŭ·¡½º °³¿ä | |
---|---|
static class |
ThreadPoolExecutor.AbortPolicy
RejectedExecutionExceptionÀ» Throw ÇÑ´Ù, °ÅºÎµÈ ŽºÅ©ÀÇ Çڵ鷯. |
static class |
ThreadPoolExecutor.CallerRunsPolicy
executor°¡ ¼Ë´Ù¿î Çϰí ÀÖÁö ¾Ê´Â °æ¿ì¿¡ execute ¸Þ¼µåÀÇ thread È£Ãâ·Î °ÅºÎµÈ ŽºÅ©¸¦ Á÷Á¢ ½ÇÇàÇÑ´Ù, °ÅºÎµÈ ŽºÅ©ÀÇ Çڵ鷯. |
static class |
ThreadPoolExecutor.DiscardOldestPolicy
executor°¡ ¼Ë´Ù¿î Çϰí ÀÖÁö ¾Ê´Â °æ¿ì¿¡ °¡Àå ³°Àº ¹Ìó¸®ÀÇ ¿ä±¸¸¦ ÆÄ±âÇØ execute¸¦ Àç½ÃÇàÇÑ´Ù, °ÅºÎµÈ ŽºÅ©ÀÇ Çڵ鷯. |
static class |
ThreadPoolExecutor.DiscardPolicy
°ÅºÎµÈ ŽºÅ©¸¦ ¿¹°í ¾øÀÌ ÆÄ±âÇÑ´Ù, °ÅºÎµÈ ŽºÅ©ÀÇ Çڵ鷯. |
»ý¼ºÀÚ °³¿ä | |
---|---|
ThreadPoolExecutor (int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue <Runnable > workQueue)
ÁöÁ¤µÈ ÃÊ±â ÆÄ¶ó¹ÌÅÍ ¹× µðÆúÆ®ÀÇ thread ÆÑÅ丮 ¹× Çڵ鷯¸¦ »ç¿ëÇØ, »õ·Î¿î ThreadPoolExecutor¸¦ ÀÛ¼ºÇÕ´Ï´Ù. |
|
ThreadPoolExecutor (int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue <Runnable > workQueue,
RejectedExecutionHandler handler)
ÁöÁ¤µÈ ÃÊ±â ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇØ, »õ·Î¿î ThreadPoolExecutor¸¦ ÀÛ¼ºÇÕ´Ï´Ù. |
|
ThreadPoolExecutor (int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue <Runnable > workQueue,
ThreadFactory threadFactory)
ÁöÁ¤µÈ ÃÊ±â ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇØ, »õ·Î¿î ThreadPoolExecutor¸¦ ÀÛ¼ºÇÕ´Ï´Ù. |
|
ThreadPoolExecutor (int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue <Runnable > workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler)
ÁöÁ¤µÈ ÃÊ±â ÆÄ¶ó¹ÌÅ͸¦ »ç¿ëÇØ, »õ·Î¿î ThreadPoolExecutor¸¦ ÀÛ¼ºÇÕ´Ï´Ù. |
¸Þ¼µå °³¿ä | |
---|---|
protected void |
afterExecute (Runnable r,
Throwable t)
ÁöÁ¤µÈ Runnable ½ÇÇà ¿Ï·á½Ã¿¡ È£ÃâµÇ´Â ¸Þ¼µå. |
boolean |
awaitTermination (long timeout,
TimeUnit unit)
¼Ë´Ù¿î ¿ä±¸ ÈÄ¿¡ ¸ðµç ŽºÅ©°¡ ½ÇÇàÀ» ¿Ï·áÇϴ ŸÀÓ ¾Æ¿ôÀÌ ¹ß»ýÇÏ´Â ÇöÀçÀÇ thread·Î ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇÏ´Â ¾î¶² °ÍÀΰ¡°¡ ÃÖÃÊ·Î ÀϾ ¶§±îÁö ºí·Ï ÇÕ´Ï´Ù. |
protected void |
beforeExecute (Thread t,
Runnable r)
ÁöÁ¤µÈ thread³»¿¡¼ ÁöÁ¤µÈ Runnable ½ÇÇà¿¡ ¾Õ¼ È£ÃâµÇ´Â ¸Þ¼µå. |
void |
execute (Runnable command)
ÁöÁ¤µÈ ŽºÅ©¸¦ Àå·¡ÀÇ ¾ðÁ¨°¡ ½ÇÇàÇÕ´Ï´Ù. |
protected void |
finalize ()
ÀÌ executor°¡ ÂüÁ¶µÇ´Â °ÍÀÌ ¾ø¾îÁ³À» °æ¿ì¿¡ shutdown¸¦ È£ÃâÇÕ´Ï´Ù. |
int |
getActiveCount ()
ŽºÅ©¸¦ Ȱ¼ºÈ ½ÇÇàÁßÀÇ threadÀÇ °³¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
long |
getCompletedTaskCount ()
½ÇÇàÀÌ ¿Ï·áÇÑ Å½ºÅ©ÀÇ ´ëü·ÎÀÇ ÃѼö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
int |
getCorePoolSize ()
threadÀÇ ÄÚ¾î¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
long |
getKeepAliveTime (TimeUnit unit)
threadÀÇ Åµ¾ó¶óÀÌºê ½Ã°£À» ¸®ÅÏÇÕ´Ï´Ù. |
int |
getLargestPoolSize ()
Áö±Ý±îÁö µ¿½Ã¿¡ Ç®¿¡ Á¸ÀçÇÑ threadÀÇ ÃÖ´ë¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
int |
getMaximumPoolSize ()
Çã°¡µÇ´Â threadÀÇ ÃÖ´ë¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
int |
getPoolSize ()
Ç®³»ÀÇ ÇöÀçÀÇ thread¼ö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
BlockingQueue <Runnable > |
getQueue ()
ÀÌ executor°¡ »ç¿ëÇϴ ŽºÅ© Å¥¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
RejectedExecutionHandler |
getRejectedExecutionHandler ()
½ÇÇà ºÒ°¡´ÉÇÑ Å½ºÅ©¿ëÀÇ ÇöÀçÀÇ Çڵ鷯¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
long |
getTaskCount ()
½ÇÇàÀÌ ½ºÄÉÁÙ µÈ ŽºÅ©ÀÇ ´ëü·ÎÀÇ ÃѼö¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
ThreadFactory |
getThreadFactory ()
»õ·Î¿î threadÀÇ ÀÛ¼º¿¡ »ç¿ëÇÏ´Â thread ÆÑÅ丮¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
boolean |
isShutdown ()
ÀÌ executor°¡ ¼Ë´Ù¿î ÇßÀ» °æ¿ì, true¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
boolean |
isTerminated ()
¼Ë´Ù¿î¿¡ ÀÌ¾î ¸ðµç ŽºÅ©°¡ ¿Ï·áÇßÀ» °æ¿ì¿¡ true¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
boolean |
isTerminating ()
shutdown ¶Ç´Â shutdownNow ÈÄ¿¡ ÀÌ executor°¡ Á¾·á 󸮸¦ ½ÇÇàÁßÀÌÁö¸¸, ¿ÏÀüÇÏ°Ô Á¾·áÇϰí ÀÖÁö ¾Ê´Â °æ¿ì, true¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
int |
prestartAllCoreThreads ()
¸ðµç ÄÚ¾î thread¸¦ °³½ÃÇØ,ÀÚ½Ä µ¹ »óÅ·Π´ë±â½Ãŵ´Ï´Ù. |
boolean |
prestartCoreThread ()
ÄÚ¾î thread¸¦ °³½ÃÇØ,ÀÚ½Ä µ¹ »óÅ·Π´ë±â½Ãŵ´Ï´Ù. |
void |
purge ()
ÀÛ¾÷ Å¥·ÎºÎÅÍ »èÁ¦µÈ Future ŽºÅ© ¸ðµç »èÁ¦¸¦ ½ÃµµÇÕ´Ï´Ù. |
boolean |
remove (Runnable task)
ÀÌ Å½ºÅ©°¡ Á¸ÀçÇÏ´Â °æ¿ì, executor ³»ºÎ Å¥·ÎºÎÅÍ »èÁ¦ÇØ, ¾ÆÁ÷ ½ÃÀÛÇϰí ÀÖÁö ¾ÊÀ¸¸é ½ÇÇàµÇÁö ¾Ê°Ô ÇÕ´Ï´Ù. |
void |
setCorePoolSize (int corePoolSize)
threadÀÇ ÄÚ¾î¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù. |
void |
setKeepAliveTime (long time,
TimeUnit unit)
thread°¡ Á¾·áÇϱâ Àü¿¡ ÀÚ½Ä µ¹ »óÅ¿¡ ¸Ó¹«¸£´Â Á¦ÇÑ ½Ã°£À» ¼³Á¤ÇÕ´Ï´Ù. |
void |
setMaximumPoolSize (int maximumPoolSize)
Çã°¡µÇ´Â threadÀÇ ÃÖ´ë¼ö¸¦ ¼³Á¤ÇÕ´Ï´Ù. |
void |
setRejectedExecutionHandler (RejectedExecutionHandler handler)
½ÇÇà ºÒ°¡´ÉÇÑ Å½ºÅ©¿ëÀÇ »õ·Î¿î Çڵ鷯¸¦ ¼³Á¤ÇÕ´Ï´Ù. |
void |
setThreadFactory (ThreadFactory threadFactory)
»õ·Î¿î threadÀÇ ÀÛ¼º¿¡ »ç¿ëÇÏ´Â thread ÆÑÅ丮¸¦ ¼³Á¤ÇÕ´Ï´Ù. |
void |
shutdown ()
¼ø¼¿¡ µû¶ó ½ÇÇàµÇ´Â ¼Ë´Ù¿îÀ» °³½ÃÇÕ´Ï´Ù. |
List <Runnable > |
shutdownNow ()
½ÇÇàÁßÀÇ È°¼ºÈµÈ ŽºÅ© ¸ðµç Á¤Áö¸¦ ½ÃµµÇØ ´ë±âÁßÀÇ Å½ºÅ©ÀÇ Ã³¸®¸¦ Á¤ÁöÇØ, ½ÇÇàÀ» ´ë±âÇϰí ÀÖ´ø ŽºÅ©ÀÇ ¸®½ºÆ®¸¦ ¸®ÅÏÇÕ´Ï´Ù. |
protected void |
terminated ()
Executor°¡ Á¾·áµÇ¾úÀ» ¶§¿¡ È£ÃâµÇ´Â ¸Þ¼µå. |
Ŭ·¡½º java.util.concurrent. AbstractExecutorService ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼µå |
---|
invokeAll,
invokeAll,
invokeAny,
invokeAny,
submit,
submit,
submit |
Ŭ·¡½º java.lang. Object ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼µå |
---|
clone,
equals,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait |
»ý¼ºÀÚ »ó¼¼ |
---|
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue <Runnable > workQueue)
Executors
ÆÑÅ丮 ¸Þ¼µåÀÇ 1°³¸¦ »ç¿ëÇÏ´Â °ÍÀÌ Æí¸®ÇÑ °æ¿ì°¡ ÀÖ½À´Ï´Ù.
corePoolSize
- Ç®³» ·Î À¯ÁöÇÏ´Â threadÀÇ ¼ö (¾ÆÀ̵¹ »óÅÂÀÇ threadµµ Æ÷ÇÔÇÑ´Ù)maximumPoolSize
- Ç®¿¡¼ Çã°¡µÇ´Â threadÀÇ ÃÖ´ë¼ökeepAliveTime
- threadÀÇ ¼ö°¡ Äھ´Ù ¸¹Àº °æ¿ì, À̰ÍÀº ÃʰúÇÑÀÚ½Ä
µ¹ »óÅÂÀÇ thread°¡ Á¾·áÀü¿¡ »õ·Î¿î ŽºÅ©¸¦ ´ë±âÇÏ´Â ÃÖ´ë ½Ã°£ÀÌ µÇ´Âunit
- keepAliveTime ÀμöÀÇ ½Ã°£ ´ÜÀ§workQueue
- ŽºÅ©¸¦ ½ÇÇàÇϱâ Àü¿¡
ŽºÅ© º¸°ü À¯Áö¿¡ »ç¿ëÇϴ ť. ÀÌ Å¥´Â execute ¸Þ¼µå¿¡ ÀÇÇØ ¼Û½ÅµÈ Runnable ŽºÅ©¸¸À» º¸°ü À¯ÁöÇÑ´Ù
IllegalArgumentException
- corePoolSize ¶Ç´Â keepAliveTime°¡ Á¦·Î ¹Ì¸¸ÀÇ °æ¿ì, maximumPoolSize°¡ Á¦·Î ¾Æ·¡ÀÇ °æ¿ì, ¶Ç´Â corePoolSize°¡ maximumPoolSize º¸´Ù Å« °æ¿ì
NullPointerException
- workQueue°¡ nullÀÎ °æ¿ìpublic ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue <Runnable > workQueue, ThreadFactory threadFactory)
corePoolSize
- Ç®³» ·Î À¯ÁöÇÏ´Â threadÀÇ ¼ö (¾ÆÀ̵¹ »óÅÂÀÇ threadµµ Æ÷ÇÔÇÑ´Ù)maximumPoolSize
- Ç®¿¡¼ Çã°¡µÇ´Â threadÀÇ ÃÖ´ë¼ökeepAliveTime
- threadÀÇ ¼ö°¡ Äھ´Ù ¸¹Àº °æ¿ì, À̰ÍÀº ÃʰúÇÑÀÚ½Ä
µ¹ »óÅÂÀÇ thread°¡ Á¾·áÀü¿¡ »õ·Î¿î ŽºÅ©¸¦ ´ë±âÇÏ´Â ÃÖ´ë ½Ã°£ÀÌ µÇ´Âunit
- keepAliveTime ÀμöÀÇ ½Ã°£ ´ÜÀ§workQueue
- ŽºÅ©¸¦ ½ÇÇàÇϱâ Àü¿¡
ŽºÅ© º¸°ü À¯Áö¿¡ »ç¿ëÇϴ ť. ÀÌ Å¥´Â execute ¸Þ¼µå¿¡ ÀÇÇØ ¼Û½ÅµÈ Runnable ŽºÅ©¸¸À» º¸°ü À¯ÁöÇÏ´ÂthreadFactory
- executor°¡ »õ·Î¿î thread¸¦ ÀÛ¼ºÇÒ ¶§¿¡ »ç¿ëÇÏ´Â ÆÑÅ丮
IllegalArgumentException
- corePoolSize ¶Ç´Â keepAliveTime°¡ Á¦·Î ¹Ì¸¸ÀÇ °æ¿ì, maximumPoolSize°¡ Á¦·Î ¾Æ·¡ÀÇ °æ¿ì, ¶Ç´Â corePoolSize°¡ maximumPoolSize º¸´Ù Å« °æ¿ì
NullPointerException
- workQueue ¶Ç´Â threadFactory°¡ nullÀÎ °æ¿ìpublic ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue <Runnable > workQueue, RejectedExecutionHandler handler)
corePoolSize
- Ç®³» ·Î À¯ÁöÇÏ´Â threadÀÇ ¼ö (¾ÆÀ̵¹ »óÅÂÀÇ threadµµ Æ÷ÇÔÇÑ´Ù)maximumPoolSize
- Ç®¿¡¼ Çã°¡µÇ´Â threadÀÇ ÃÖ´ë¼ökeepAliveTime
- threadÀÇ ¼ö°¡ Äھ´Ù ¸¹Àº °æ¿ì, À̰ÍÀº ÃʰúÇÑÀÚ½Ä
µ¹ »óÅÂÀÇ thread°¡ Á¾·áÀü¿¡ »õ·Î¿î ŽºÅ©¸¦ ´ë±âÇÏ´Â ÃÖ´ë ½Ã°£ÀÌ µÇ´Âunit
- keepAliveTime ÀμöÀÇ ½Ã°£ ´ÜÀ§workQueue
- ŽºÅ©¸¦ ½ÇÇàÇϱâ Àü¿¡
ŽºÅ© º¸°ü À¯Áö¿¡ »ç¿ëÇϴ ť. ÀÌ Å¥´Â execute ¸Þ¼µå¿¡ ÀÇÇØ ¼Û½ÅµÈ Runnable ŽºÅ©¸¸À» º¸°ü À¯ÁöÇÏ´Âhandler
- thread°¡ Á¦ÇÑ¿¡ À̸£´ÂÁö, Å¥°¡ ¿ë·®¿¡ À̸£·¶±â ¶§¹®¿¡ ½ÇÇàÀÌ ºí·Ï µÇ¾úÀ» °æ¿ì¿¡ »ç¿ëÇÏ´Â Çڵ鷯
IllegalArgumentException
- corePoolSize ¶Ç´Â keepAliveTime°¡ Á¦·Î ¹Ì¸¸ÀÇ °æ¿ì, maximumPoolSize°¡ Á¦·Î ¾Æ·¡ÀÇ °æ¿ì, ¶Ç´Â corePoolSize°¡ maximumPoolSize º¸´Ù Å« °æ¿ì
NullPointerException
- workQueue ¶Ç´Â handler°¡ nullÀÎ °æ¿ìpublic ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue <Runnable > workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)
corePoolSize
- Ç®³» ·Î À¯ÁöÇÏ´Â threadÀÇ ¼ö (¾ÆÀ̵¹ »óÅÂÀÇ threadµµ Æ÷ÇÔÇÑ´Ù)maximumPoolSize
- Ç®¿¡¼ Çã°¡µÇ´Â threadÀÇ ÃÖ´ë¼ökeepAliveTime
- threadÀÇ ¼ö°¡ Äھ´Ù ¸¹Àº °æ¿ì, À̰ÍÀº ÃʰúÇÑÀÚ½Ä
µ¹ »óÅÂÀÇ thread°¡ Á¾·áÀü¿¡ »õ·Î¿î ŽºÅ©¸¦ ´ë±âÇÏ´Â ÃÖ´ë ½Ã°£ÀÌ µÇ´Âunit
- keepAliveTime ÀμöÀÇ ½Ã°£ ´ÜÀ§workQueue
- ŽºÅ©¸¦ ½ÇÇàÇϱâ Àü¿¡
ŽºÅ© º¸°ü À¯Áö¿¡ »ç¿ëÇϴ ť. ÀÌ Å¥´Â execute ¸Þ¼µå¿¡ ÀÇÇØ ¼Û½ÅµÈ Runnable ŽºÅ©¸¸À» º¸°ü À¯ÁöÇÏ´ÂthreadFactory
- executor°¡ »õ·Î¿î thread¸¦ ÀÛ¼ºÇÒ ¶§¿¡ »ç¿ëÇÏ´Â ÆÑÅ丮handler
- thread°¡ Á¦ÇÑ¿¡ À̸£´ÂÁö, Å¥°¡ ¿ë·®¿¡ À̸£·¶±â ¶§¹®¿¡ ½ÇÇàÀÌ ºí·Ï µÇ¾úÀ» °æ¿ì¿¡ »ç¿ëÇÏ´Â Çڵ鷯
IllegalArgumentException
- corePoolSize ¶Ç´Â keepAliveTime°¡ Á¦·Î ¹Ì¸¸ÀÇ °æ¿ì, maximumPoolSize°¡ Á¦·Î ¾Æ·¡ÀÇ °æ¿ì, ¶Ç´Â corePoolSize°¡ maximumPoolSize º¸´Ù Å« °æ¿ì
NullPointerException
- workQueue, threadFactory, ¶Ç´Â handler°¡ nullÀÎ °æ¿ì¸Þ¼µåÀÇ »ó¼¼ |
---|
public void execute(Runnable command)
command
- ½ÇÇàÇϴ ŽºÅ©
RejectedExecutionException
- ŽºÅ©¸¦ ½ÇÇà¿ëÀ¸·Î ¹Þ¾ÆµéÀÏ ¼ö°¡ ¾ø´Â °æ¿ì, RejectedExecutionHandler
ÆÇ´ÜÀ¸·Î Throw µÈ´Ù
NullPointerException
- Ä¿¸àµå°¡ nullÀÎ °æ¿ìpublic void shutdown()
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â »óȲÀ¸·Î ¼Ë´Ù¿îÀ» ½ÇÇàÇϸé, ÀÌ ExecutorService ÀÌ È£ÃâÇØ Ãø¿¡´Â º¯°æÀÌ Çã°¡µÇÁö ¾Ê´Â thread¸¦ Á¶ÀÛÇÒ ¼ö ÀÖ´Â °æ¿ì. À̰ÍÀº, RuntimePermission
("modifyThread")¸¦ º¸°ü À¯ÁöÇÏÁö ¾Ê´ÂÁö, ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkAccess ¸Þ¼µå°¡ ¾×¼¼½º¸¦ °ÅºÎÇϱâ À§ÇØÀÌ´Ùpublic List <Runnable > shutdownNow()
ÀÌ ±¸ÇöÀº Thread.interrupt()
¸¦
°³ÀÔ½ÃÄÑ Å½ºÅ©¸¦ Ãë¼ÒÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡
¸î°³ÀÇ Å½ºÅ©°¡ ¸¶½ºÅ©¸¦ ½ÇÇàÇÏ´ÂÁö, ÀÎÅÍ·´Æ®¿¡ÀÇ ÀÀ´ä¿¡ ½ÇÆÐÇϸé, ±× ŽºÅ©°¡ °áÄÚ Á¾·áÇÏÁö ¾Ê°Ô µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
SecurityException
- ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀú°¡ Á¸ÀçÇÏ´Â »óȲÀ¸·Î ¼Ë´Ù¿îÀ» ½ÇÇàÇϸé, ÀÌ ExecutorService ÀÌ È£ÃâÇØ Ãø¿¡´Â º¯°æÀÌ Çã°¡µÇÁö ¾Ê´Â thread¸¦ Á¶ÀÛÇÒ ¼ö ÀÖ´Â °æ¿ì. À̰ÍÀº, RuntimePermission
("modifyThread")¸¦ º¸°ü À¯ÁöÇÏÁö ¾Ê´ÂÁö, ½ÃÅ¥·¯Æ¼ ¸Å´ÏÀúÀÇ checkAccess ¸Þ¼µå°¡ ¾×¼¼½º¸¦ °ÅºÎÇϱâ À§ÇØÀÌ´Ùpublic boolean isShutdown()
ExecutorService
񃬣:
public boolean isTerminating()
public boolean isTerminated()
ExecutorService
񃬣:
public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException
ExecutorService
񃬣:
timeout
- ´ë±âÇÏ´Â ÃÖÀå ½Ã°£unit
- timeout ÀμöÀÇ ½Ã°£ ´ÜÀ§
InterruptedException
- ´ë±âÁß¿¡ ÀÎÅÍ·´Æ®°¡ ¹ß»ýÇßÀ» °æ¿ìprotected void finalize()
Object
³»ÀÇ finalize
public void setThreadFactory(ThreadFactory threadFactory)
threadFactory
- »õ·Î¿î thread ÆÑÅ丮
NullPointerException
- threadFactory°¡ nullÀÎ °æ¿ìgetThreadFactory()
public ThreadFactory getThreadFactory()
setThreadFactory(java.util.concurrent.ThreadFactory)
public void setRejectedExecutionHandler(RejectedExecutionHandler handler)
handler
- »õ·Î¿î Çڵ鷯
NullPointerException
- Çڵ鷯°¡ nullÀÎ °æ¿ìgetRejectedExecutionHandler()
public RejectedExecutionHandler getRejectedExecutionHandler()
setRejectedExecutionHandler(java.util.concurrent.RejectedExecutionHandler)
public BlockingQueue <Runnable > getQueue()
public boolean remove(Runnable task)
ÀÌ ¸Þ¼µå´Â Ãë¼Ò schemaÀÇ ÀϺημ À¯È¿ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ³»ºÎ Å¥¿¡ ¹èÄ¡µÇ±â Àü¿¡ ´Ù¸¥ Çü½Ä¿¡ º¯È¯µÈ ŽºÅ©´Â »èÁ¦¿¡ ½ÇÆÐÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, submit¸¦ »ç¿ëÇØ ÀÔ·ÂµÈ Å½ºÅ©´Â Future »óŸ¦ À¯ÁöÇÏ´Â Çü½Ä¿¡ º¯È¯µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ´Ù¸¸, ÀÌ °æ¿ì´Â purge()
¸Þ¼µå¸¦ »ç¿ëÇØ ÀÌ·¯ÇÑ »èÁ¦µÈ Future¸¦ »èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù.
task
- »èÁ¦Çϴ ŽºÅ©
public void purge()
Future
ŽºÅ© ¸ðµç »èÁ¦¸¦ ½ÃµµÇÕ´Ï´Ù. ÀÌ ¸Þ¼µå´Â ±â´É¿¡ ´Ù¸¥ ¿µÇâÀ» ¹ÌÄ¥¸®°¡ ¾ø´Â ±â¾ï ¿µ¿ªÀÇ Àç»ý Á¶ÀÛ¿¡ µµ¿òÀÌ µË´Ï´Ù. »èÁ¦µÈ ŽºÅ©´Â °áÄÚ ½ÇÇàµË´Ï´Ù¸¸, ¿öÄ«½º·¹µå°¡ À̰͵éÀ» Ȱ¼ºÈ
»èÁ¦ÇÒ ¼ö ÀÖ°Ô µÉ ¶§±îÁö ÀÛ¾÷ Å¥¿¡ ÃàÀûµË´Ï´Ù. ÀÌ ¸Þ¼µå¸¦ È£ÃâÇϸé, ±×·¯ÇÑ »èÁ¦¸¦ Áï½Ã ½ÃµµÇÕ´Ï´Ù. ´Ù¸¸, ´Ù¸¥ thread·ÎºÎÅÍÀÇ °£¼·ÀÌ Á¸ÀçÇÏ´Â °æ¿ì, ÀÌ ¸Þ¼µå´Â ŽºÅ©ÀÇ »èÁ¦¿¡ ½ÇÆÐÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.
public void setCorePoolSize(int corePoolSize)
corePoolSize
- »õ·Î¿î ÄÚ¾î »çÀÌÁî
IllegalArgumentException
- corePoolSize°¡ Á¦·Î ¹Ì¸¸ÀÇ °æ¿ìgetCorePoolSize()
public int getCorePoolSize()
setCorePoolSize(int)
public boolean prestartCoreThread()
public int prestartAllCoreThreads()
public void setMaximumPoolSize(int maximumPoolSize)
maximumPoolSize
- »õ·Î¿î ÃÖ´ë°ª
IllegalArgumentException
- maximumPoolSize°¡ Á¦·Î ¹Ì¸¸ ¶Ç´ÂÄÚ¾î Ç® »çÀÌÁî
ÀÎ °æ¿ìgetMaximumPoolSize()
public int getMaximumPoolSize()
setMaximumPoolSize(int)
public void setKeepAliveTime(long time, TimeUnit unit)
time
- ´ë±â ½Ã°£. ½Ã°£°ªÀÌ Á¦·ÎÀÇ °æ¿ì, ÃʰúÇÑ thread´Â ŽºÅ©ÀÇ ½ÇÇà ÈÄ Áï½Ã Á¾·áÇÏ´Âunit
- time ÀμöÀÇ ½Ã°£ ´ÜÀ§
IllegalArgumentException
- ½Ã°£ÀÌ Á¦·Î ¹Ì¸¸ÀÇ °æ¿ìgetKeepAliveTime(java.util.concurrent.TimeUnit)
public long getKeepAliveTime(TimeUnit unit)
unit
- ±â´ëµÇ´Â °á°úÀÇ ½Ã°£ ´ÜÀ§
setKeepAliveTime(long, java.util.concurrent.TimeUnit)
public int getPoolSize()
public int getActiveCount()
public int getLargestPoolSize()
public long getTaskCount()
public long getCompletedTaskCount()
protected void beforeExecute(Thread t, Runnable r)
t
- ŽºÅ© r¸¦ ½ÇÇàÇÏ´Â threadr
- ½ÇÇàµÇ´Â ŽºÅ©protected void afterExecute(Runnable r, Throwable t)
r
- ¿Ï·áÇÑ runnablet
- Á¾·áÀÇ ¿øÀÎÀÌ µÈ ¿¹¿Ü. ½ÇÇàÀÌ Á¤»óÀûÀ¸·Î ¿Ï·áÇßÀ» °æ¿ì´Â nullprotected void terminated()
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
ÀÌÀü Ŭ·¡½º ´ÙÀ½ Ŭ·¡½º | ÇÁ·¹ÀÓÀ¸·Î ÇÁ·¹ÀÓ ¾øÀÌ | |||||||||
°³¿ä: »óÀÚ | Çʵå | constructor | ¸Þ¼µå | »ó¼¼: Çʵå | »ý¼ºÀÚ | ¸Þ¼µå |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.