I have been an Android engineer for over 5 years and have used the tools and frameworks provided by the OS - like Intents, Executors, Threads and even Kotlin Coroutines. I have been working on some large scale designs involving both frontend and backend and I feel like a novice when it comes to concurrency.
There are ton's of resources to learn but based on your real world experience, whats the best way to learn these design patterns?
I worked as an Android developer in larger companies like Pinterest and Meta, both of which had well-defined patterns for handling asynchronous/concurrent work. So I didn't get much of a chance to learn "vanilla" ways of handling async operations.
What helped me tremendously was to teach the concept to others. That's what I did with Kotlin coroutines in this YouTube video: Kotlin Coroutines: Getting Started in Android - Beginner Tutorial.
I'd encourage you to follow some existing resource, but then pretend that you have to teach the concept to a colleague in a tight video or blog post.
I'd read https://docs.oracle.com/javase/tutorial/essential/concurrency/.
I also highly recommend Joshua Bloc's Effective Java to build rock solid knowledge of the JVM internals