Coroutines: Concurrency in Kotlin

แชร์
ฝัง
  • เผยแพร่เมื่อ 16 พ.ย. 2024

ความคิดเห็น • 90

  • @tonyseben
    @tonyseben 3 หลายเดือนก่อน +52

    Hands down the best explanation on Coroutines on the internet! The analogies and the illustrations are on point.

    • @typealias
      @typealias  3 หลายเดือนก่อน +4

      Wow, thanks so much, Tony! I'm glad you liked it!

  • @sureshsivalingam01
    @sureshsivalingam01 3 หลายเดือนก่อน +22

    I think you're the best underrated youtuber on android development videos

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      Hey, thanks so much, Suresh - I appreciate that!

  • @milleniumtv908
    @milleniumtv908 3 หลายเดือนก่อน +19

    Hi, I love how u make describe things, very concise and understandable. Please keep posting more. Love u

    • @typealias
      @typealias  3 หลายเดือนก่อน +4

      Hey, thanks so much! Glad you enjoy it.

    • @doboshmichael
      @doboshmichael 3 หลายเดือนก่อน +3

      Absolutely! It's definitely an underestimated skill - being able to describe things in simple words

  • @mithileshdhupia2533
    @mithileshdhupia2533 3 หลายเดือนก่อน +11

    Best video i ever watched on coroutine

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      Wow, that's kind of you to say that! Thank you so much!

  • @nixoncode
    @nixoncode 3 หลายเดือนก่อน +8

    Really beautifully explained concurrency concepts

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      Thank you so much, Nixon!

  • @mahmoudrizk15
    @mahmoudrizk15 3 หลายเดือนก่อน +1

    Thank You sir.
    You are the best Kotlin content creator on TH-cam NO QUESTION ASKED, they should hand you the diamond play button now❤❤❤❤

    • @typealias
      @typealias  3 หลายเดือนก่อน

      Haha, wow! That's very kind of you to say that 😁 Thank you so much!

  • @JaganathanG
    @JaganathanG 3 หลายเดือนก่อน +2

    Your explanations, illustrations, and key points are all put together so well; it’s a beautifully orchestrated presentation. I wish you had been my college tutor.

    • @typealias
      @typealias  3 หลายเดือนก่อน +1

      Wow, thank you so much! I'm so glad you liked it!

  • @yasminhaitham9551
    @yasminhaitham9551 27 วันที่ผ่านมา

    seriously under rated extreamly support

  • @abdushakoor0099
    @abdushakoor0099 3 หลายเดือนก่อน +4

    2 minutes in the video already love it

  • @filipbeban
    @filipbeban 3 หลายเดือนก่อน +3

    Great job, Dave, as always!

  • @oliverweiler8113
    @oliverweiler8113 หลายเดือนก่อน

    Phenomenal presentation! Thanks for sharing!

  • @nehaljain8193
    @nehaljain8193 3 หลายเดือนก่อน +3

    You make every concept to understand so easily, Thanks a lot :) Keep posting :)

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      Thank you, Nehal! I'll keep at it!

  • @StefanoGroenland
    @StefanoGroenland 2 หลายเดือนก่อน +1

    You’re awesome 🎉 I haven’t learned a new language this fast, ever before! You sir are great at explaining! Keep this up!!

    • @typealias
      @typealias  2 หลายเดือนก่อน +1

      Oh wow, that's really great to hear - really glad that you're picking it up so quickly! I'll keep at it!

  • @enossalar8837
    @enossalar8837 3 หลายเดือนก่อน +2

    Such a great explanation

  • @electrick5182
    @electrick5182 3 หลายเดือนก่อน +2

    Thank you for sharing this kind of video! The story telling and the overall presentation makes it easy to understand these concepts. Keep it up mate! So glad your video appeared on my Home page :)

    • @typealias
      @typealias  3 หลายเดือนก่อน +3

      Hey, that's great - I'm so glad you found this style of presentation effective! I'll definitely keep it up! 👍

  • @PrajwalCanonShutter
    @PrajwalCanonShutter หลายเดือนก่อน

    Everything gracefully and with good analogies, explained !

  • @sawyannaing8594
    @sawyannaing8594 หลายเดือนก่อน

    I have been struggling for a long time for what is coroutines,until I see your explanation.Thanks that helps me alot

    • @typealias
      @typealias  หลายเดือนก่อน

      That's fantastic! I'm so glad you found it helpful!

  • @guyguy467
    @guyguy467 3 หลายเดือนก่อน +2

    Great explanation

  • @ericwathome783
    @ericwathome783 3 หลายเดือนก่อน

    You should do more chapters of the book like this. This is very helpful

  • @fabricioaraujo7642
    @fabricioaraujo7642 3 หลายเดือนก่อน +1

    This channel are slowly became the best content about kotlin stuff in yt ! Congrats

    • @typealias
      @typealias  3 หลายเดือนก่อน +1

      Wow, thank you so much, Fabricio! I appreciate it!

  • @shotoneko
    @shotoneko 28 วันที่ผ่านมา

    Super! Thanks for this video explanation, Dave.

  • @yanfarba4726
    @yanfarba4726 2 หลายเดือนก่อน

    Thank you so much for the great talk! One of the best explanations of coroutine concepts I've seen out there!

    • @typealias
      @typealias  2 หลายเดือนก่อน

      Hey, thank you so much, Yan! I appreciate that!

  • @EmmanuelBLONVIA
    @EmmanuelBLONVIA 2 หลายเดือนก่อน

    Dave, I've watched several videos of yours and I can tell that you are definitely the BEST Kotlin teacher on the planet. I'll buy your book.
    If you have a paid Kotlin and/or KMP course, I will also buy it !

    • @typealias
      @typealias  2 หลายเดือนก่อน +1

      Hey, thank you so much, Emmanuel - that's very kind of you to say! I haven't got any online courses just yet, but I'm planning to start working on them after I put the finishing touches on the book.

  • @phucosg
    @phucosg 3 หลายเดือนก่อน +3

    I would love to see a tutorial on how you created those lovely picture for the demonstration. Your website has always been my recommendation for new joiner of our team to get started with Kotlin.

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      Thanks so much! I'd be happy to demonstrate the drawing process - I'll add that to my list of "bonus video" ideas

  • @Adyel-YT
    @Adyel-YT 3 หลายเดือนก่อน

    The visualizations really helped. Thanks for the great informative video.

  • @GameEndorphins
    @GameEndorphins หลายเดือนก่อน

    This course is very useful to me,thank you.

  • @thisissmz
    @thisissmz 3 หลายเดือนก่อน +1

    Great presentation. Thanks for sharing the information. ❤

    • @typealias
      @typealias  3 หลายเดือนก่อน +1

      You're most welcome!

  • @Sanjuanita-x5s
    @Sanjuanita-x5s 2 หลายเดือนก่อน

    Such a great explanation. Great job, Dave, as always!.

  • @thetechiegarage
    @thetechiegarage 2 หลายเดือนก่อน

    This is such a great breakdown on coroutines! Thank you!

  • @bernardoslailati
    @bernardoslailati หลายเดือนก่อน

    Excellent content! Totally amazing... Congratulations Dave, you're awesome! 🎉👏

    • @typealias
      @typealias  หลายเดือนก่อน

      Thanks so much, Bernardo! I appreciate that! 🙂

  • @flowzk921
    @flowzk921 3 หลายเดือนก่อน

    Super Super Awesome! very great story telling!

  • @CommanderSteps
    @CommanderSteps 3 หลายเดือนก่อน +2

    Great video, thank you! :)

  • @simonmartinelli
    @simonmartinelli หลายเดือนก่อน

    Amazing explanation. Thanks a lot!

  • @cdhiraj40
    @cdhiraj40 3 หลายเดือนก่อน +2

    great explanation! thanks for this.

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      Thanks, Dhiraj! And you're most welcome!

  • @ivanpagac7946
    @ivanpagac7946 3 หลายเดือนก่อน

    best tutor ever!!!! clear, to the point

    • @typealias
      @typealias  3 หลายเดือนก่อน

      Thanks so much, Ivan!

  • @tongcaocuong8223
    @tongcaocuong8223 หลายเดือนก่อน

    What a great explanation

  • @ArthurKhazbs
    @ArthurKhazbs 3 หลายเดือนก่อน

    Woah! Turns out coroutines are not running on magic! Dave, thank you so much for the great explanation, the captivating story and the wonderful illustrations! Top shelf video, as always on your channel! :)

    • @typealias
      @typealias  3 หลายเดือนก่อน

      I appreciate that, Arthur! Thanks so much! 😁

  • @loveyouself5389
    @loveyouself5389 3 หลายเดือนก่อน

    Wow! Please do more✨

  • @AsifKhan-v2n7o
    @AsifKhan-v2n7o 3 หลายเดือนก่อน +2

    Highly Recommended #trending

  • @devopsthinh
    @devopsthinh 3 หลายเดือนก่อน +2

    Great talk, thanks, from Vietnam😅😅😅

    • @typealias
      @typealias  3 หลายเดือนก่อน +1

      Hey, thanks so much! And hello! 🙂

  • @haukekonradcoding
    @haukekonradcoding 3 หลายเดือนก่อน +1

    Great explanations. Where are your cool cartoons from, did you create them yourself?

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      Thanks so much - I'm glad you like the cartoons! Yes, I created all the illustrations in this video. Cartooning has always been a hobby of mine, so it's fun getting to combine my drawing and programming interests into my videos and articles. 😁

  • @MuhammadDaif
    @MuhammadDaif 2 หลายเดือนก่อน

    This is art ! :-)

  • @ПавелГладков-р7ы
    @ПавелГладков-р7ы 3 หลายเดือนก่อน +1

    Добрый день. Все кирпичики становятся на свои места )) Кажется вам очень нравится Котлин?

    • @typealias
      @typealias  3 หลายเดือนก่อน +1

      That's great! Yes, I've been very happy with Kotlin!

  • @archit7606
    @archit7606 3 หลายเดือนก่อน +2

    You have any courses and/or books on Kotlin and Kotlin Multi-platform?

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      Hey Archit, thanks for asking! The main content of my book is complete, and I'm working on upscaling the illustrations so that we can get a good print edition of it. You can read it online (typealias.com/start) and there's a Leanpub edition for purchase if you prefer PDF (book.typealias.com). I don't have any courses available yet, but I'm planning to focus on creating them after the print edition of the book is ready.

    • @archit7606
      @archit7606 3 หลายเดือนก่อน

      @@typealias Nice! It would be great if you make a complete series titled "Kotlin Multi-platform for Java Developers"! ❤️

  • @PedroBarbosaRoman
    @PedroBarbosaRoman 3 หลายเดือนก่อน

    Thank you for the great presentation! I have question related to the first coroutine example: shouldn't the second coroutine have a yield() as the first line of the block, since the order of the coroutines is not guaranteed and so the Hammer clothesline could run before the Sledge suplex? With the first yield we ensure that the first line of code of the first launched coroutine will always run first. Does it make sense?

    • @typealias
      @typealias  3 หลายเดือนก่อน

      Hey, thanks so much, Pedro! I believe that isn't necessary here because we're just using runBlocking's event loop as the dispatcher, which - at least in practice - processes them first-in-first-out. If we add yield() at the beginning of that second launch, we'll see two moves from Sledge before Hammer does anything. Let me know if you do get different output than that, though!

    • @PedroBarbosaRoman
      @PedroBarbosaRoman 3 หลายเดือนก่อน

      ​@@typealias Yes, you are correct! It seems that the runBlocking runs the first coroutine until it finds a yield() or some other function that also yields like a delay() or the coroutine ends, before even running the second one. I tried using a while loop that does nothing in the first coroutine without yielding and the second coroutine wasn't even started which indicates the behaviour you described! Also tested runBlocking with a Dispatchers.Default and the behaviour changed so this is due to the event loop runBlocking uses. Thanks for the clarification!

    • @typealias
      @typealias  3 หลายเดือนก่อน +1

      Okay, fantastic - thanks for taking the time to confirm that, Pedro! And of course, in most real-life scenarios, I'm sure it's a good idea to keep in mind that the order isn't guaranteed, as you mentioned. 👍

  • @jameslorenzen2610
    @jameslorenzen2610 หลายเดือนก่อน

    Question: In the Parallelism chapter, prior to adding the `Dispatchers.IO` to the `async` coroutine builder, the calls to `order` were running "currently" and not in "parallel"? Well, actually let me take that back. Since both order calls use the same Dispatcher, they will execute concurrently since they are using the same underlying thread pool. Is that correct?

    • @typealias
      @typealias  หลายเดือนก่อน

      Hey James! If we don't specify a dispatcher to use when calling a coroutine builder, the coroutine inherits the dispatcher from its parent. So, in the code at 16:45, the two `async` coroutines and the `launch` coroutine are just inheriting the dispatcher from `runBlocking`, which is using a blocking event loop that's just running on the `main` thread. Once we get to the Parallelism chapter, we actually start using thread pools. Hope that makes sense!

    • @jameslorenzen2610
      @jameslorenzen2610 หลายเดือนก่อน

      @@typealias So prior to the Parallelism chapter, things are running "concurrently", right?

    • @typealias
      @typealias  หลายเดือนก่อน

      Yes - starting at 8:54 when we first call yield(), things run concurrently until we get to the Parallelism chapter. And prior to 8:54, it's just good ol' fashioned sequential code.

  • @Charles-EddyPARPET
    @Charles-EddyPARPET 3 หลายเดือนก่อน

    Hello, I'm wondering if you are okay that I use your illustrations and explanations for a Kotlin training I'm giving in my company? (Of course I'll source the illustrations linking to your typealias website)

    • @Charles-EddyPARPET
      @Charles-EddyPARPET 3 หลายเดือนก่อน

      By the way, that was really cool explanations of the concept of coroutines. :-)

    • @typealias
      @typealias  3 หลายเดือนก่อน

      Hey Charles, thanks for asking! Would you be able to send me a direct message on X (x.com/djleeds), LinkedIn (www.linkedin.com/in/daveleeds/), or Kotlin Slack (djleeds)? Happy to follow up with you there!

  • @disciplinaremorso
    @disciplinaremorso 3 วันที่ผ่านมา

  • @shahidzbi
    @shahidzbi 3 หลายเดือนก่อน +2

    Head Down Sir what's an Explanation
    Guys let's make that Skyscraper by hitting the Subscribe Button ❤

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      Haha, thanks so much Shahid! I appreciate that! 😁

    • @shahidzbi
      @shahidzbi 3 หลายเดือนก่อน +1

      ❤🎉

  • @Chriptus
    @Chriptus 3 หลายเดือนก่อน

    Instead of runblocking at entrypoint of the application we should declare main as suspend

    • @typealias
      @typealias  3 หลายเดือนก่อน +2

      We can do that, but then we won't have a coroutine scope upon which to call launch(). So we'd have to wrap the launch() calls in a `coroutineScope {}` block. In other words, we'd end up replacing `runBlocking {}` with both a `suspend` modifier and a `coroutineScope {}`.
      For this video, that would have been a lot of concepts to introduce just to run our first coroutine, so I stuck with runBlocking. But yes, you can certainly add the suspend modifier to main() if you'd like!

    • @Chriptus
      @Chriptus 3 หลายเดือนก่อน

      @@typealias ya that makes sense for educative purposes to keep few concepts at a time!

  • @robchr
    @robchr 3 หลายเดือนก่อน +1

    You have a typo where it should be `.also { it.cancel() }`

    • @typealias
      @typealias  3 หลายเดือนก่อน +1

      Ah, you're right - thanks for catching that! Wish I could update the video with a fix, but TH-cam doesn't let you change much. So hopefully anyone who gets stuck on it will notice your comment. 😅 I'll see if I can add an info card or something...