¸¹Àº °³¹ßÀÚµéÀÌ ¾î·Æ°Ô ´À³¢´Â ºñµ¿±â ÇÁ·Î±×·¡¹ÖÀ» ´Ù¾çÇÑ ½Ã°¢Àû ÀÚ·á¿Í ¼³¸íÀ» ÅëÇØ ´©±¸³ª ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ¾²ÀΠåÀÌ´Ù. ¾Èµå·ÎÀ̵å, ½ºÇÁ¸µ µî ÄÚƲ¸°À» »ç¿ëÇÏ´Â °³¹ßÀÚµé Áß ÄÚ·çƾÀ» »ç¿ëÇÑ ºñµ¿±â ÇÁ·Î±×·¡¹ÖÀ» ±âÃʺÎÅÍ ½ÉȱîÁö Á¦´ë·Î ¹è¿öº¸°í ½ÍÀº µ¶Àڵ鿡°Ô ÃßõÇÑ´Ù.
¢Â ÃßõÀÇ ±Û ¢Â
ÄÚƲ¸° Àú¼¸¦ ÁýÇÊÇÏ¸é¼ ÄÚ·çƾ°ú µ¿½Ã¼º¿¡ ´ëÇÑ ³»¿ëÀ» ³ÖÁö ¾Ê¾Æ °ü·ÃµÈ Ã¥À» ³¾±î °í¹ÎÇÏ´ø Áß, ¿ì¿¬È÷ ÃâÆǻ縦 ÅëÇØ Ãâ°£ °èȹ¼¸¦ °ËÅäÇØ´Þ¶ó´Â ¿äûÀ» ¹Þ¾Ò´Ù. À̸§Àº ¾ø¾úÁö¸¸ ÄÚ·çƾ ±â¼ú ¹®¼¸¦ ¹ø¿ªÇØ ¿Ã¸° ÀúÀÚ¶ó´Â »ç½ÇÀ» ³Ê¹« ½±°Ô ¾Ë ¼ö ÀÖ¾ú´Ù. ÄÚ·çƾÀ» °øºÎÇÏ¸é¼ ÀúÀÚ°¡ Á¤¸®ÇÑ ³»¿ë°ú ¹ø¿ªÇÑ ³»¿ë¿¡¼ ¸¹Àº µµ¿òÀ» ¹Þ¾Ò±â ¶§¹®À̾ú´Ù. ±âȹ ³»¿ëµµ ü°èÀûÀ̾ú°í, ³»°¡ ½èÀ¸¸é ÇÏ´Â ³»¿ëµéÀÌ ´Ù µé¾î°¡ ÀÖ¾î¼ ÈçÄèÈ÷ º£Å¸¸®µùÀ» ÅëÇØ ÀÛ°Ô³ª¸¶ µµ¿òÀ» µå¸®±â·Î °áÁ¤Çß´Ù.
ÄÚƲ¸°À» ¹è¿ì°í È°¿ëÇÏ´Ù º¸¸é ÄÚ·çƾÀ» ÅëÇÑ µ¿½Ã¼º 󸮰¡ ÇʼöÀûÀÌ´Ù. ÇÏÁö¸¸ ÄÚƲ¸° °ø½Ä ¹®¼³ª ÄÚƲ¸° ÄÚ·çƾ ±¸Çö °ü·Ã ¹®¼´Â óÀ½ º¸´Â »ç¶÷ÀÌ È帧À» µû¶ó °¡¸é¼ ÀÌÇØÇϱ⿣ ¾î·Á¿î ºÎºÐÀÌ ¸¹´Ù. ÀÌ´Â ÄÚ·çƾ¿¡ ´ëÇØ ´Ù·ç´Â ´ëºÎºÐÀÇ ¹®¼³ª Ã¥, µ¿¿µ»óÀÌ ¾î´À Á¤µµ µ¿½Ã¼º 󸮿¡ ´ëÇØ ¾Ë°í ÀÖ´Ù°í °¡Á¤Çϱ⠶§¹®ÀÌ´Ù. ±×·¡¼ óÀ½ºÎÅÍ ÄÁƼ´º¿¡À̼ÇÀ̳ª ÄÚ·çƾ ³»ºÎÀÇ »óŸӽÅ, µð½ºÆÐÄ¡ ±¸Á¶ µî ³ªÁß¿¡ »ìÆ캸´Â ÆíÀÌ ´õ ³ªÀº ¼¼ºÎ »çÇ×À» ¼³¸íÇÏ´Â °ÍºÎÅÍ ½ÃÀÛÇϱ⠶§¹®¿¡, ÄÚƲ¸°À¸·Î µ¿½Ã¼º 󸮸¦ óÀ½ ½ÃÀÛÇÏ´Â »ç¶÷Àº ¿ÀÈ÷·Á º¹ÀâÇÑ °³³äµé ¼Ó¿¡¼ °¥ÇǸ¦ ¸øÀâ°í Çì¸Å´Â °æ¿ì°¡ ¸¹´Ù.
ÀÌ Ã¥Àº ´ÙÁß½º·¹µå ÇÁ·Î±×·¡¹ÖÀ» ´Ù·ç°í, ÄÚ·çƾ µð½ºÆÐó, ÄÚ·çƾ ºô´õ, Job, Deferred, ÄÚ·çƾ ÄÁÅؽºÆ®, ±¸Á¶ÈµÈ µ¿½Ã¼º, ¿¹¿Ü ó¸® ¼ø¼·Î ¼³¸íÀ» ÁøÇàÇÑ´Ù. ±×¸®°í ´Ù½Ã ÀϽà Áß´Ü ÇÔ¼ö¿Í ÄÚ·çƾ¿¡ ´ëÇØ ¼³¸íÇÔÀ¸·Î½á óÀ½ ÄÚ·çƾÀ» »ç¿ëÇÒ ¶§ Á¤¸» ÇÊ¿äÇÑ ³»¿ëºÎÅÍ ÄÚƲ¸° ÄÚ·çƾÀ» ±íÀÌ ¹è¿ö³ª°¥ ¼ö ÀÖµµ·Ï µµ¿ÍÁØ´Ù. ±× °úÁ¤¿¡¼ ÀÚ¼¼ÇÑ ¿¹Á¦ Äڵ带 ÅëÇØ ½Ç¹«¿¡¼ ÄÚ·çƾÀ» »ç¿ëÇÒ ¶§ ¾Ë¾ÆµÖ¾ß ÇÏ´Â °³³ä°ú ÁÖÀÇÇØ¾ß ÇÒ ÇÔÁ¤À» ¾Ë·ÁÁØ´Ù. ¼³¸í°ú ¿¹Á¦ ÄÚµå´Â °³³äÀ» ÃæºÐÈ÷ ¼³¸íÇ쵂 ³Ê¹« Áö³ªÄ¡Áö ¾Ê°í, ³Ê¹« °£°áÇÏÁöµµ ¾Ê°Ô µü Àû´çÇÑ ¼öÁØÀ̹ǷΠÂ÷±ÙÂ÷±Ù ÂѾư¡±â ÁÁ´Ù. ÀÌ Ã¥À» °ç¿¡ µÎ°í Àß ÀÍÈ÷¸é ÄÚƲ¸° °³¹ßÀڵ鿡°Ô Å©°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù.
ÄÚƲ¸°À» ¹è¿ì°í ÄÚ·çƾÀ» È°¿ëÇÑ µ¿½Ã¼º ÇÁ·Î±×·¡¹ÖÀ» ÁøÇàÇÏ·Á´Â °³¹ßÀÚµéÀ̳ª, ÄÚ·çƾÀ» »ç¿ëÇϱâ´Â ÇßÁö¸¸ ÄÚ·çƾ µð½ºÆÐó, ÄÁÅؽºÆ®, Àâ °èÃþ±¸Á¶ µî¿¡ ´ëÇØ ´õ Àß ¾Ë°í ½ÍÀº °³¹ßÀڵ鿡°Ô ÀÌ Ã¥À» ±ÇÇÑ´Ù.
¦¡¿ÀÇö¼®, ¸ðºô¸®Æ¼42 ÀÌ»ç
¡ºÄÚƲ¸° ÄÚ·çƾÀÇ Á¤¼®¡»Àº ¡º¼öÇÐÀÇ Á¤¼®¡»°ú °°ÀÌ ÄÚ·çƾ °³³ä¿¡ ÀÔ¹®ÇÏ´Â µ¥ ÃÖÀûÈµÈ ÈǸ¢ÇÑ ¾È³»¼ÀÌ´Ù. Ãʺ¸ÀÚµµ ºÎ´ã ¾øÀÌ µû¶ó°¥ ¼ö ÀÖµµ·Ï ½¬¿î ¾ð¾î¿Í Á÷°üÀûÀÎ ¿¹Á¦, ±×¸²À¸·Î ¼³¸íµÅ ÀÖ¾î ÀÔ¹®ÀÚ¿¡°Ô ÆíÇÏ°Ô ´Ù°¡°¡¸ç, ¿¹Á¦ Äڵ带 ÅëÇØ °³³äÀ» ½ÇÁ¦·Î Àû¿ëÇÏ´Â ¹æ¹ýÀ» ¸íÈ®È÷ º¸¿©Á༠½Ç¹«¿¡ ¹Ù·Î Àû¿ëÇغ¼ ¼ö ÀÖ´Ù. ÄÚƲ¸° ÄÚ·çƾÀÇ ±âÃʸ¦ źźÈ÷ ´ÙÁö°íÀÚ ÇÏ´Â ÁÖ´Ï¾î °³¹ßÀÚ³ª ºñµ¿±â ÇÁ·Î±×·¡¹Ö¿¡ ¾î·Á¿òÀ» ´À³¢´Â µ¶Àڵ鿡°Ô °·ÂÈ÷ ÃßõÇÑ´Ù.
¦¡°´ë±Ô, ´ç±Ù¸¶ÄÏ ¾Èµå·ÎÀÌµå °³¹ßÀÚ
ÄÚ·çƾÀ» ÃʽÉÀÚµµ ÀÌÇØÇÒ ¼ö ÀÖµµ·Ï ü°èÀûÀ¸·Î Á¤¸®ÇÑ Ã¥À» ã±â ¾î·Á¿ü´Ù º¸´Ï ÀÌ Ã¥ÀÇ µîÀåÀÌ ¹Ý°¡¿ü´Ù. ÄÚ·çƾÀ» ¹è¿î´Ù¸é ÇʼöÀûÀ¸·Î ¾Ë¾Æ¾ß ÇÒ ÁÖÁ¦µéÀ» ´ã°í ÀÖÀ¸¸ç, ÄÚ·çƾÀÇ ±âÃÊ »ç¿ë»Ó¸¸ ¾Æ´Ï¶ó ³»ºÎ µ¿ÀÛÀ» ÀÌÇØÇϱâ À§ÇÑ ³»¿ëÀ» ±×¸²°ú ¿¹Á¦ Äڵ带 ÅëÇØ Ä£ÀýÇÏ°Ô ¼³¸íÇÑ´Ù.
°¢ ±â¼úÀÇ ÁÖÁ¦¿¡ ´ëÇÑ WHATÀ» ¼³¸íÇØ ÁÖ´Â °ÍÀ» ³Ñ¾î ÀÌÇظ¦ µ½±â À§ÇÑ ¿ë¾îÀÇ ¾î¿øÀ̳ª ¹è°æÀ» ÅëÇØ WHY¸¦ ¼³¸íÇÏ°í ÀÖ¾î¼ ÀúÀÚ°¡ µ¶ÀÚÀÇ ÀÌÇظ¦ µ½±â À§ÇØ °í¹ÎÇÑ ÈçÀûÀÌ ´À²¸Áø´Ù. ÄÚ·çƾÀ» óÀ½ °øºÎÇÏ´Â µ¶ÀÚµéÀ̳ª, ÀÌ¹Ì ÄÚ·çƾÀ» ¹è¿üÁö¸¸ Á» ´õ ±í°Ô ÀÌÇØÇÏ°í ½ÍÀº µ¶Àڵ鿡°Ô µµ¿òÀÌ µÉ °ÍÀÌ´Ù. ÄÚ·çƾ, ÀÌ Ã¥ ÇÑ ±ÇÀÌ¸é µÈ´Ù.
¦¡ÀÌÁÖ¿µ, ÈÇØ ¾Èµå·ÎÀÌµå ¸®µå °³¹ßÀÚ
ÄÚƲ¸° ÄÚ·çƾ ÃʽÉÀÚ°¡ Àо°¡´Â µ¥ ÀüÇô ¾î·Á¿òÀÌ ¾øµµ·Ï ³»¿ëÀ» ±¸¼ºÇÏ°í ÀÖÀ¸¸ç, ¹è°æÁö½ÄÀÌ °¢ éÅÍ ¼µÎ¿¡ Àß ¼¼úµÅ ÀÖ´Ù. ªÀº È£ÈíÀ¸·Î ÀÌ·ïÁø ÀÌ Ã¥ÀÇ ±¸¼ºÀº ÀÚÄ© ½±°Ô ¹æÇâÀ» ÀÒ¾î¹ö¸± ¼ö ÀÖ´Â ÀϹÝÀûÀÎ IT ±â¼ú ¼Àû°ú´Â ÀüÇô ´Ù¸£°Ô ´À²¸Áø´Ù.
ÄÚ·çƾÀÇ º¹ÀâÇÑ µ¿½Ã¼ºÀ» ¼³¸íÇϱâ À§ÇØ ÀýÂ÷¸¦ »ó¼¼È÷ µµ½ÄÈÇØ ÀÌÇظ¦ µµ¿Ô°í, ƯÈ÷ ½Ç »ç¿ë¿¡ ÀÖÀ» ¹ýÇÑ ÀûÀýÇÑ ¿¹½Ã¸¦ ¹ÙÅÁÀ¸·Î »ç¿ë Àǵµ¸¦ ÆľÇÇϱ⠽±°Ô ÁýÇÊÇß´Ù. ÁÖ¿ä ÀÎÅÍÆäÀ̽º¸¦ ÄÚµå ·¹º§¿¡¼ ºñ±³ÇØ ºÐ¸íÇÑ ¾²ÀÓ»õ¸¦ ±¸ºÐÇÏ´Â °Íµµ µ¶ÀÚÀÇ ÀÌÇØ È帧¿¡ Å« µµ¿òÀÌ µÈ´Ù.
¦¡ÀÌÁöȯ, ³×À̹ö ¹é¿£µå °³¹ßÀÚ
°³¹ßÀÚ¿¡°Ô ºñµ¿±â ÄÚµåÀÇ Á߿伺À» ÀÌÇØÇÏ°í ½ÇÁúÀûÀ¸·Î È°¿ëÇÏ´Â °ÍÀº ÇʼöÀûÀÎ ´É·ÂÀÌ´Ù. ÀÌ Ã¥Àº ºñµ¿±â°¡ ¿Ö ÇÊ¿äÇÑÁö, ±×¸®°í ¾î¶»°Ô È¿À²ÀûÀ¸·Î ºñµ¿±â Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖ´ÂÁö, ÄÚ·çƾÀÇ Á¦¾î¿Í °ü¸®¸¦ À§ÇÑ ¹æ¹ýµéÀ» ´Ù¾çÇÑ ¿¹Á¦¸¦ ÅëÇØ ½±°Ô ÀÌÇØÇÒ ¼ö ÀÖ°Ô Á¦°øÇÑ´Ù. ±×»Ó¸¸ ¾Æ´Ï¶ó ½ÉÈ ÁÖÁ¦¿¡ ´ëÇؼµµ ´Ù·ç°í ÀÖ¾î, ±âº» °³³äÀ» ³Ñ¾î¼ ´õ ±íÀº ÀÌÇظ¦ µ½´Â´Ù.
ÀÌ Ã¥À» ƯÈ÷ ÁÖ´Ï¾î °³¹ßÀڵ鿡°Ô ÃßõÇÏ´Â ÀÌÀ¯´Â ÄÚ·çƾ¿¡ ´ëÇÑ ±íÀº ÀÌÇØ ¾øÀÌ´Â È¿À²ÀûÀÎ ÄÚµå ÀÛ¼ºÀÌ ¾î·Æ±â ¶§¹®ÀÌ´Ù. ¹ö±×¸¦ ÃÖ¼ÒÈÇÏ°í, °³¹ß ½Ã°£À» ´ÜÃàÇϱâ À§ÇØ ÇÊ¿äÇÑ ÄÚ·çƾÀÇ ¸¹Àº È°¿ë¹ýÀ» ÀÌ Ã¥¿¡¼ ãÀ» ¼ö ÀÖ´Ù. µ¶ÀÚµéÀÌ ºñµ¿±â ÄÚµåÀÇ º¹À⼺À» ±ò²ûÇÏ°Ô ´Ù·ç°í ÀÌÇØÇÏ´Â µ¥ Å« µµ¿òÀ» ¹ÞÀ» ¼ö ÀÖÀ» °Å¶ó È®½ÅÇÑ´Ù.
¦¡Á¤¿ìÁø, ¶óÀÎ ¾Èµå·ÎÀÌµå °³¹ßÀÚ
°íµîÇлý ¶§´Â Çб³ ¼±»ý´ÔµéÀÇ ¼ö¾÷À¸·Î ÀÌÇØÇÏÁö ¸øÇß´ø °³³äÀ» ÀÎÅͳÝÀÇ ½ºÅ¸ °»çµéÀÌ ÀÌÇؽÃÄÑ Áá´Ù. ÄÚƲ¸° ÄÚ·çƾÀÇ Á¤¼®µµ ¸¶Âù°¡Áö´Ù. ½ÉÁö¾î µ¿¿µ»óµµ ¾Æ´Ñ Ã¥ÀÌÁö¸¸, ½±°Ô ÀÌÇØÇÏÁö ¸øÇß´ø ÄÚ·çƾ °³³äÀ» ¸Ó¸´¼Ó¿¡ ÁÖÀÔÇØ ÁØ´Ù.
Ã¥Àº ¾Õ¿¡¼ºÎÅÍ ¿¹½Ã Äڵ带 ½ÇÇàÇغ¸¸é¼ µû¶ó°¡¸é Á¦ÀÏ ÁÁ´Ù. ¼³¸íÀ» Á¶±Ý¸¸ Àо´õ¶óµµ ³» ¸»À» ÀÌÇØÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸Ó¸´¼Ó¿¡ °³³äÀ» ÁÖÀÔÇÏ°í ÀÖ´Â ½ºÅ¸ °»çÀÇ Æí¸°ÀÌ ´À²¸Áú °ÍÀÌ´Ù. º»¹®À» Àо·¯ °¡ÀÚ. ÀϺθ¸ Àдõ¶óµµ ¾ò¾î°¡´Â °Ô ÀÖÀ» °ÍÀÌ´Ù.
¦¡ÀÌ´ë°Ç, ÇÏÀÌÆÛ Ä¿³ØÆ® ¹é¿£µå °³¹ßÀÚ
Ãë¹Ì·Î ¾Èµå·ÎÀÌµå °³¹ßÀ» ½ÃÀÛÇß´Ù°¡ ºüÁ®µé¾î ¾Èµå·ÎÀÌµå °³¹ßÀÚ°¡ µÆ´Ù. ÇÏÀÌÆÛÄ¿³ØÆ®¿¡¼ ¾Èµå·ÎÀÌµå °³¹ßÀڷμ Ä¿¸®¾î¸¦ ½ÃÀÛÇß°í, ÇöÀç´Â ¶óÀÎÇ÷¯½º¿¡¼ ¶óÀÎ ¾Èµå·ÎÀÌµå ¾ÛÀ» °³¹ßÇÏ°í ÀÖ´Ù. ¾Èµå·ÎÀÌµå °³¹ßÀ» ÇÏ¸é¼ ¾î·Á¿òÀ» ´À³¤ ºÎºÐµéÀ» ´Ù¸¥ »ç¶÷µé°ú °øÀ¯ÇÏ°í ½Í¾î ¡®Á¶¼¼¿µÀÇ Kotlin World¡¯ ±â¼ú ºí·Î±×¸¦ ¿î¿µÇϸç 400°³ ÀÌ»óÀÇ ±ÛÀ» ¹ßÇàÇß´Ù. ºí·Î±× ¿î¿µ ¿Ü¿¡µµ ±â¼ú°ú °ü·ÃµÈ ´Ù¾çÇÑ È°µ¿À» ÇÏ°í ÀÖ´Ù. ÄÚ·çƾ ±â¼ú ¹®¼¸¦ ¹ø¿ªÇØ À¥¿¡ ¹èÆ÷Çϱ⵵ Çß°í, Compose Dynamic ThemeÀ̳ª Filled Slider Compose °°Àº ¿ÀÇ ¼Ò½º ¶óÀ̺귯¸®¸¦ ¸¸µé¾î ¹èÆ÷ÇØ Google Dev Library¿¡ ¼Ò°³µÇ±âµµ Çß´Ù.
Çö ¶óÀÎÇ÷¯½º ¾Èµå·ÎÀÌµå °³¹ßÀÚ. Àü ÇÏÀÌÆÛÄ¿³ØÆ® ¾Èµå·ÎÀÌµå °³¹ßÀÚ, Ƽ¸Æ½ºµ¥ÀÌÅÍ ¿¬±¸¿ø, ÀΰøÀ§¼º¿¬±¸¼Ò ´ëÇпø»ý ¿¬±¸¿ø.
KAIST Àü±â¹×ÀüÀÚ°øÇкΠ¼®»ç, °í·Á´ëÇб³ Àü±âÀüÀÚÀüÆÄ°øÇкΠÇлç, °í·Á´ëÇб³ º¸°ÇÁ¤Ã¥°ü¸®ÇкΠÇлç, ÀÎõ¿Ü±¹¾î°íµîÇб³ Á¹¾÷.
1Àå ½º·¹µå ±â¹Ý ÀÛ¾÷ÀÇ ÇÑ°è¿Í ÄÚ·çƾÀÇ µîÀå 1.1. JVM ÇÁ·Î¼¼½º¿Í ½º·¹µå1.2. ´ÜÀÏ ½º·¹µåÀÇ ÇÑ°è¿Í ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¡¹Ö1.2.1. ´ÜÀÏ ½º·¹µå ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÇÑ°è 1.2.2. ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¡¹ÖÀ» ÅëÇÑ ´ÜÀÏ ½º·¹µåÀÇ ÇÑ°è ±Øº¹ 1.3. ½º·¹µå, ½º·¹µåÇ®À» »ç¿ëÇÑ ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¡¹Ö1.3.1. Thread Ŭ·¡½º¸¦ »ç¿ëÇÏ´Â ¹æ¹ý°ú ÇÑ°è 1.3.2. Executor ÇÁ·¹ÀÓ¿÷À» ÅëÇØ ½º·¹µåÇ® »ç¿ëÇϱâ1.3.3. ÀÌÈÄÀÇ ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¡¹Ö°ú ÇÑ°è 1.4. ±âÁ¸ ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¡¹ÖÀÇ ÇÑ°è¿Í ÄÚ·çƾ1.4.1. ±âÁ¸ ¸ÖƼ ½º·¹µå ÇÁ·Î±×·¡¹ÖÀÇ ÇÑ°è1.4.2. ÄÚ·çƾÀº ½º·¹µå ºí·ÎÅ· ¹®Á¦¸¦ ¾î¶»°Ô ±Øº¹Çϴ°¡?1.5. ¿ä¾à 2Àå ÄÚ·çƾ °³¹ß ȯ°æ ¼³Á¤ 2.1. ÀÎÅÚ¸®Á¦ÀÌ ¾ÆÀ̵ð¾î ¼³Ä¡ ¹× µÑ·¯º¸±â2.1.1. ÀÎÅÚ¸®Á¦ÀÌ ¾ÆÀ̵ð¾î ¼³Ä¡Çϱâ582.2. ÄÚƲ¸° ÇÁ·ÎÁ§Æ® »ý¼ºÇÏ°í È¸é ±¸¼º »ìÆ캸±â2.2.1. ÇÁ·ÎÁ§Æ® »ý¼ºÇϱâ 2.2.2. IDE ±¸¼º »ìÆ캸±â2.3. ù ÄÚ·çƾ ½ÇÇàÇϱâ 2.3.1. ÄÚ·çƾ ¶óÀ̺귯¸® Ãß°¡Çϱâ2.3.2. ù ÄÚ·çƾ ½ÇÇàÇϱâ2.4. ÄÚ·çƾ µð¹ö±ë ȯ°æ ¼³Á¤Çϱâ 2.4.1. ½ÇÇà ÁßÀÎ ½º·¹µå Ãâ·ÂÇϱâ 2.4.2. ½ÇÇà ÁßÀÎ ÄÚ·çƾ À̸§ Ãâ·ÂÇϱâ 2.4.3. launch »ç¿ëÇØ ÄÚ·çƾ Ãß°¡·Î ½ÇÇàÇϱâ2.4.4. CoroutineName »ç¿ëÇØ ÄÚ·çƾ¿¡ À̸§ Ãß°¡Çϱâ 2.5. ¿ä¾à 3Àå CoroutineDispatcher 3.1. CoroutineDispatcher¶õ ¹«¾ùÀΰ¡? 3.1.1. CoroutineDispatcherÀÇ µ¿ÀÛ »ìÆ캸±â 3.1.2. CoroutineDispatcherÀÇ ¿ªÇÒ 3.2. Á¦ÇÑµÈ µð½ºÆÐó¿Í ¹«Á¦ÇÑ µð½ºÆÐó 3.3. Á¦ÇÑµÈ µð½ºÆÐó »ý¼ºÇϱâ 3.3.1. ´ÜÀÏ ½º·¹µå µð½ºÆÐó ¸¸µé±â 3.3.2. ¸ÖƼ ½º·¹µå µð½ºÆÐó ¸¸µé±â 3.4. CoroutineDispatcher »ç¿ëÇØ ÄÚ·çƾ ½ÇÇàÇϱâ 3.4.1. launchÀÇ ÆĶó¹ÌÅÍ·Î CoroutineDispatcher »ç¿ëÇϱâ3.4.2. ºÎ¸ð ÄÚ·çƾÀÇ CoroutineDispatcher »ç¿ëÇØ ÀÚ½Ä ÄÚ·çƾ ½ÇÇàÇϱâ 3.5. ¹Ì¸® Á¤ÀÇµÈ CoroutineDispatcher 3.5.1. Dispatchers.IO3.5.2. Dispatchers.Default3.5.3. limitedParallelism »ç¿ëÇØ Dispatchers.Default ½º·¹µå »ç¿ë Á¦ÇÑÇϱâ3.5.4. °øÀ¯ ½º·¹µåÇ®À» »ç¿ëÇÏ´Â Dispatchers.IO¿Í Dispatchers.Default43.5.5. Dispatchers.Main 3.6. ¿ä¾à4Àå ÄÚ·çƾ ºô´õ¿Í Job 4.1. joinÀ» »ç¿ëÇÑ ÄÚ·çƾ ¼øÂ÷ ó¸®4.1.1. ¼øÂ÷ 󸮰¡ ¾È µÉ °æ¿ìÀÇ ¹®Á¦ 4.1.2. join ÇÔ¼ö »ç¿ëÇØ ¼øÂ÷ ó¸®Çϱâ 4.2. joinAllÀ» »ç¿ëÇÑ ÄÚ·çƾ ¼øÂ÷ ó¸® 4.2.1. joinAll ÇÔ¼ö4.2.2. joinAll ÇÔ¼ö »ç¿ëÇØ º¸±â4.3. CoroutineStart.LAZY »ç¿ëÇØ ÄÚ·çƾ Áö¿¬ ½ÃÀÛÇϱâ4.3.1. Áö¿¬ ½ÃÀÛÀ» »ìÆ캸±â À§ÇÑ Áغñ4.3.2. CoroutineStart.LAZY »ç¿ëÇØ ÄÚ·çƾ Áö¿¬ ½ÃÀÛÇϱâ4.4. ÄÚ·çƾ Ãë¼ÒÇϱâ4.4.1. cancel »ç¿ëÇØ Job Ãë¼ÒÇϱâ4.4.2. cancelAndJoinÀ» »ç¿ëÇÑ ¼øÂ÷ ó¸®4.5. ÄÚ·çƾÀÇ Ãë¼Ò È®ÀÎ4.5.1. delay¸¦ »ç¿ëÇÑ Ãë¼Ò È®ÀÎ4.5.2. yield¸¦ »ç¿ëÇÑ Ãë¼Ò È®ÀÎ 4.5.3. CoroutineScope.isActive¸¦ »ç¿ëÇÑ Ãë¼Ò È®ÀÎ 4.6. ÄÚ·çƾÀÇ »óÅÂ¿Í JobÀÇ »óÅ º¯¼ö4.6.1. JobÀÇ »óŸ¦ Ãâ·ÂÇÏ´Â ÇÔ¼ö ¸¸µé±â 4.6.2. »ý¼º »óÅÂÀÇ ÄÚ·çƾ 4.6.3. ½ÇÇà Áß »óÅÂÀÇ ÄÚ·çƾ4.6.4. ½ÇÇà ¿Ï·á »óÅÂÀÇ ÄÚ·çƾ 4.6.5. Ãë¼Ò ÁßÀÎ ÄÚ·çƾ 4.6.6. Ãë¼Ò ¿Ï·áµÈ ÄÚ·çƾ 4.6.7. »óÅ Á¤¸® 4.7. ¿ä¾à 5Àå async¿Í Deferred 5.1. async »ç¿ëÇØ °á±£°ª ¼ö½ÅÇϱâ 5.1.1. async »ç¿ëÇØ Deferred ¸¸µé±â5.1.2. await¸¦ »ç¿ëÇÑ °á±£°ª ¼ö½Å 5.2. Deferred´Â Ư¼öÇÑ ÇüÅÂÀÇ JobÀÌ´Ù5.3. º¹¼öÀÇ ÄÚ·çƾÀ¸·ÎºÎÅÍ °á±£°ª ¼ö½ÅÇϱâ 5.3.1. await¸¦ »ç¿ëÇØ º¹¼öÀÇ ÄÚ·çƾÀ¸·ÎºÎÅÍ °á±£°ª ¼ö½ÅÇϱâ 5.3.2. awaitAllÀ» »ç¿ëÇÑ °á±£°ª ¼ö½Å5.3.3. Ä÷º¼Ç¿¡ ´ëÇØ awaitAll »ç¿ëÇϱâ5.4. withContext 5.4.1. withContext·Î async-await ´ëüÇϱâ 5.4.2. withContextÀÇ µ¿ÀÛ ¹æ½Ä 5.4.3. withContext »ç¿ë ½Ã ÁÖÀÇÁ¡ 5.5. ¿ä¾à 6Àå CoroutineContext 6.1. CoroutineContextÀÇ ±¸¼º ¿ä¼Ò6.2. CoroutineContext ±¸¼ºÇϱâ 6.2.1. CoroutineContext°¡ ±¸¼º ¿ä¼Ò¸¦ °ü¸®ÇÏ´Â ¹æ¹ý6.2.2. CoroutineContext ±¸¼º6.2.3. CoroutineContext ±¸¼º ¿ä¼Ò µ¤¾î¾º¿ì±â6.2.4. ¿©·¯ ±¸¼º ¿ä¼Ò·Î ÀÌ·ïÁø CoroutineContext ÇÕÄ¡±â6.2.5. CoroutineContext¿¡ Job »ý¼ºÇØ Ãß°¡Çϱâ6.3. CoroutineContext ±¸¼º ¿ä¼Ò¿¡ Á¢±ÙÇϱâ6.3.1. CoroutineContext ±¸¼º ¿ä¼ÒÀÇ Å°6.3.2. Å°¸¦ »ç¿ëÇØ CoroutineContext ±¸¼º ¿ä¼Ò¿¡ Á¢±ÙÇϱâ 6.4. CoroutineContext ±¸¼º ¿ä¼Ò Á¦°ÅÇϱâ 6.4.1. minusKey »ç¿ëÇØ ±¸¼º ¿ä¼Ò Á¦°ÅÇϱâ 6.4.2. minusKey ÇÔ¼ö »ç¿ë ½Ã ÁÖÀÇÇÒ Á¡ 6.5. ¿ä¾à 7Àå ±¸Á¶ÈµÈ µ¿½Ã¼º 7.1. ½ÇÇà ȯ°æ »ó¼Ó 7.1.1. ºÎ¸ð ÄÚ·çƾÀÇ ½ÇÇà ȯ°æ »ó¼Ó7.1.2. ½ÇÇà ȯ°æ µ¤¾î¾º¿ì±â7.1.3. »ó¼ÓµÇÁö ¾Ê´Â Job 7.1.4. ±¸Á¶È¿¡ »ç¿ëµÇ´Â Job7.2. ÄÚ·çƾÀÇ ±¸Á¶È¿Í ÀÛ¾÷ Á¦¾î 7.2.1. Ãë¼ÒÀÇ ÀüÆÄ7.2.2. ºÎ¸ð ÄÚ·çƾÀÇ ÀÚ½Ä ÄÚ·çƾ¿¡ ´ëÇÑ ¿Ï·á ÀÇÁ¸¼º 7.3. CoroutineScope »ç¿ëÇØ ÄÚ·çƾ °ü¸®Çϱâ7.3.1. CoroutineScope »ý¼ºÇϱâ 7.3.2. ÄÚ·çƾ¿¡°Ô ½ÇÇà ȯ°æÀ» Á¦°øÇÏ´Â CoroutineScope7.3.3. CoroutineScope¿¡ ¼ÓÇÑ ÄÚ·çƾÀÇ ¹üÀ§7.3.4. CoroutineScope Ãë¼ÒÇϱâ 7.3.5. CoroutineScope È°¼ºÈ »óÅ ȮÀÎÇϱâ7.4. ±¸Á¶È¿Í Job 7.4.1. runBlocking°ú ·çÆ® Job 7.4.2. Job ±¸Á¶È ±ú±â 7.4.3. Job »ç¿ëÇØ ÀϺΠÄÚ·çƾ¸¸ Ãë¼ÒµÇÁö ¾Ê°Ô ¸¸µé±â7.4.4. »ý¼ºµÈ JobÀÇ ºÎ¸ð¸¦ ¸í½ÃÀûÀ¸·Î ¼³Á¤Çϱâ7.4.5. »ý¼ºµÈ JobÀº ÀÚµ¿À¸·Î ½ÇÇà ¿Ï·áµÇÁö ¾Ê´Â´Ù 7.5. ¿ä¾à 8Àå ¿¹¿Ü ó¸® 8.1. ÄÚ·çƾÀÇ ¿¹¿Ü ÀüÆÄ8.1.1. ÄÚ·çƾ¿¡¼ ¿¹¿Ü°¡ ÀüÆĵǴ ¹æ½Ä8.1.2. ¿¹Á¦·Î ¾Ë¾Æº¸´Â ¿¹¿Ü ÀüÆÄ 8.2. ¿¹¿Ü ÀüÆÄ Á¦ÇÑ 8.2.1. Job °´Ã¼¸¦ »ç¿ëÇÑ ¿¹¿Ü ÀüÆÄ Á¦ÇÑ 8.2.2. SupervisorJob °´Ã¼¸¦ »ç¿ëÇÑ ¿¹¿Ü ÀüÆÄ Á¦ÇÑ 8.2.3. supervisorScope¸¦ »ç¿ëÇÑ ¿¹¿Ü ÀüÆÄ Á¦ÇÑ 8.3. CoroutineExceptionHandler¸¦ »ç¿ëÇÑ ¿¹¿Ü ó¸®8.3.1. CoroutineExceptionHandler »ý¼º 8.3.2. CoroutineExceptionHandler »ç¿ë 8.3.3. 󸮵ÇÁö ¾ÊÀº ¿¹¿Ü¸¸ ó¸®ÇÏ´Â CoroutineExceptionHandler8.3.4. CoroutineExceptionHandler°¡ ¿¹¿Ü¸¦ ó¸®Çϵµ·Ï ¸¸µé±â8.3.5. CoroutineExceptionHandler´Â ¿¹¿Ü ÀüÆĸ¦ Á¦ÇÑÇÏÁö ¾Ê´Â´Ù8.4. try catch¹®À» »ç¿ëÇÑ ¿¹¿Ü ó¸®8.4.1. try catch¹®À» »ç¿ëÇØ ÄÚ·çƾ ¿¹¿Ü ó¸®Çϱâ 8.4.2. ÄÚ·çƾ ºô´õ ÇÔ¼ö¿¡ ´ëÇÑ try catch¹®Àº ÄÚ·çƾÀÇ ¿¹¿Ü¸¦ ÀâÁö ¸øÇÑ´Ù8.5. asyncÀÇ ¿¹¿Ü ó¸®8.5.1. asyncÀÇ ¿¹¿Ü ³ëÃâ 8.5.2. asyncÀÇ ¿¹¿Ü ÀüÆÄ 8.6. ÀüÆĵÇÁö ¾Ê´Â ¿¹¿Ü8.6.1. ÀüÆĵÇÁö ¾Ê´Â CancellationException 8.6.2. ÄÚ·çƾ Ãë¼Ò ½Ã »ç¿ëµÇ´Â JobCancellationException 8.6.3. withTimeOut »ç¿ëÇØ ÄÚ·çƾÀÇ ½ÇÇà ½Ã°£ Á¦ÇÑÇϱâ8.7. ¿ä¾à 9Àå ÀϽà Áß´Ü ÇÔ¼ö 9.1. ÀϽà Áß´Ü ÇÔ¼ö¿Í ÄÚ·çƾ9.1.1. ÀϽà Áß´Ü ÇÔ¼ö¶õ ¹«¾ùÀΰ¡? 9.1.2. ÀϽà Áß´Ü ÇÔ¼ö´Â ÄÚ·çƾÀÌ ¾Æ´Ï´Ù 9.1.3. ÀϽà Áß´Ü ÇÔ¼ö¸¦ º°µµÀÇ ÄÚ·çƾ»ó¿¡¼ ½ÇÇàÇϱâ9.2. ÀϽà Áß´Ü ÇÔ¼öÀÇ »ç¿ë 9.2.1. ÀϽà Áß´Ü ÇÔ¼öÀÇ È£Ãâ °¡´É ÁöÁ¡9.2.2. ÀϽà Áß´Ü ÇÔ¼ö¿¡¼ ÄÚ·çƾ ½ÇÇàÇϱâ 9.3. ¿ä¾à 10Àå ÄÚ·çƾÀÇ ÀÌÇØ 10.1. ¼ºê·çƾ°ú ÄÚ·çƾ10.1.1. ·çƾ°ú ¼ºê·çƾ 10.1.2. ¼ºê·çƾ°ú ÄÚ·çƾÀÇ Â÷ÀÌ 10.2. ÄÚ·çƾÀÇ ½º·¹µå ¾çº¸ 10.2.1. delay ÀϽà Áß´Ü ÇÔ¼ö¸¦ ÅëÇØ ¾Ë¾Æº¸´Â ½º·¹µå ¾çº¸ 10.2.2. join°ú awaitÀÇ µ¿ÀÛ ¹æ½Ä ÀÚ¼¼È÷ ¾Ë¾Æº¸±â 10.2.3. yield ÇÔ¼ö È£ÃâÇØ ½º·¹µå ¾çº¸Çϱâ 10.3. ÄÚ·çƾÀÇ ½ÇÇà ½º·¹µå 10.3.1. ÄÚ·çƾÀÇ ½ÇÇà ½º·¹µå´Â °íÁ¤ÀÌ ¾Æ´Ï´Ù10.3.2. ½º·¹µå¸¦ ¾çº¸ÇÏÁö ¾ÊÀ¸¸é ½ÇÇà ½º·¹µå°¡ ¹Ù²îÁö ¾Ê´Â´Ù10.4. ¿ä¾à 11Àå ÄÚ·çƾ ½ÉÈ 11.1. °øÀ¯ »óŸ¦ »ç¿ëÇÏ´Â ÄÚ·çƾÀÇ ¹®Á¦¿Í µ¥ÀÌÅÍ µ¿±âÈ 11.1.1. °¡º¯ º¯¼ö¸¦ »ç¿ëÇÒ ¶§ÀÇ ¹®Á¦Á¡11.1.2. JVMÀÇ ¸Þ¸ð¸® °ø°£ÀÌ Çϵå¿þ¾î ¸Þ¸ð¸® ±¸Á¶¿Í ¿¬°áµÇ´Â ¹æ½Ä 11.1.3. °øÀ¯ »óÅ¿¡ ´ëÇÑ ¸Þ¸ð¸® °¡½Ã¼º ¹®Á¦¿Í ÇØ°á ¹æ¹ý11.1.4. °øÀ¯ »óÅ¿¡ ´ëÇÑ °æÀï »óÅ ¹®Á¦¿Í ÇØ°á ¹æ¹ý 11.2. CoroutineStartÀÇ ´Ù¾çÇÑ ¿É¼Çµé »ìÆ캸±â 11.2.1. CoroutineStart.DEFAULT 11.2.2. CoroutineStart.ATOMIC 11.2.3. CoroutineStart.UNDISPATCHED 11.3. ¹«Á¦ÇÑ µð½ºÆÐó11.3.1. ¹«Á¦ÇÑ µð½ºÆÐó¶õ?11.3.2. ¹«Á¦ÇÑ µð½ºÆÐóÀÇ Æ¯Â¡ 11.4. ÄÚ·çƾÀÇ µ¿ÀÛ ¹æ½Ä°ú Continuation 11.4.1. Continuation Passing Style11.4.2. ÄÚ·çƾÀÇ ÀϽà Áß´Ü°ú Àç°³·Î ¾Ë¾Æº¸´Â Continuation 11.4.3. ´Ù¸¥ ÀÛ¾÷À¸·ÎºÎÅÍ °á°ú ¼ö½ÅÇØ ÄÚ·çƾ Àç°³Çϱâ11.5. ¿ä¾à 12Àå ÄÚ·çƾ ´ÜÀ§ Å×½ºÆ® 12.1. ´ÜÀ§ Å×½ºÆ® ±âÃÊ12.1.1. ´ÜÀ§ Å×½ºÆ®¶õ ¹«¾ùÀΰ¡? 12.1.2. Å×½ºÆ® ȯ°æ ¼³Á¤Çϱâ12.1.3. °£´ÜÇÑ Å×½ºÆ® ¸¸µé°í ½ÇÇàÇϱâ12.1.4. @BeforeEach ¾î³ëÅ×À̼ÇÀ» »ç¿ëÇÑ Å×½ºÆ® ȯ°æ ¼³Á¤ 12.1.5. Å×½ºÆ® ´õºíÀ» »ç¿ëÇØ ÀÇÁ¸¼º ÀÖ´Â °´Ã¼ Å×½ºÆ®Çϱâ 12.2. ÄÚ·çƾ ´ÜÀ§ Å×½ºÆ® ½ÃÀÛÇϱâ 12.2.1. ù ÄÚ·çƾ Å×½ºÆ® ÀÛ¼ºÇϱâ 12.2.2. runBlockingÀ» »ç¿ëÇÑ Å×½ºÆ®ÀÇ ÇÑ°è12.3. ÄÚ·çƾ Å×½ºÆ® ¶óÀ̺귯¸®12.3.1. ÄÚ·çƾ Å×½ºÆ® ¶óÀ̺귯¸® ÀÇÁ¸¼º ¼³Á¤Çϱâ12.3.2. TestCoroutineScheduler »ç¿ëÇØ °¡»ó ½Ã°£¿¡¼ Å×½ºÆ® ÁøÇàÇϱâ12.3.3. TestCoroutineScheduler¸¦ Æ÷ÇÔÇÏ´Â StandardTestDispatcher12.3.4. TestScope »ç¿ëÇØ °¡»ó ½Ã°£¿¡¼ Å×½ºÆ® ÁøÇàÇϱâ12.3.5. runTest »ç¿ëÇØ Å×½ºÆ® ¸¸µé±â12.4. ÄÚ·çƾ ´ÜÀ§ Å×½ºÆ® ¸¸µé¾î º¸±â12.4.1. ÄÚ·çƾ ´ÜÀ§ Å×½ºÆ®¸¦ À§ÇÑ ÄÚµå ÁغñÇϱâ12.4.2. FollowerSearcher Ŭ·¡½º Å×½ºÆ® ÀÛ¼ºÇϱâ12.5. ÄÚ·çƾ Å×½ºÆ® ½ÉÈ12.5.1. ÇÔ¼ö ³»ºÎ¿¡¼ »õ·Î¿î ÄÚ·çƾÀ» ½ÇÇàÇÏ´Â °´Ã¼¿¡ ´ëÇÑ Å×½ºÆ®12.5.2. backgroundScope¸¦ »ç¿ëÇØ Å×½ºÆ® ¸¸µé±â12.6. ¿ä¾à