We may earn an affiliate commission when you visit our partners.
Course image
Vasiliy Zukanov

Multithreading is an essential topic in Android development because, to write snappy and reliable Android applications, you must use more than one thread. Unfortunately, multithreading is also a very complex technique that introduces unique challenges. Incorrect multithreaded code manifests itself as unresponsive user interfaces, freezes, memory leaks, crashes and other bugs, all of which can be very challenging to find and fix.

Read more

Multithreading is an essential topic in Android development because, to write snappy and reliable Android applications, you must use more than one thread. Unfortunately, multithreading is also a very complex technique that introduces unique challenges. Incorrect multithreaded code manifests itself as unresponsive user interfaces, freezes, memory leaks, crashes and other bugs, all of which can be very challenging to find and fix.

In this course, you'll dive into the fundamentals of multithreading and learn to write correct and performant multithreaded code of any complexity in your Android applications.

Topics covered in this course:

  • What  a thread is

  • Why multithreading is uniquely challenging

  • Keep the user interface responsive

  • Make your multithreaded code thread-safe (i.e. correct and reliable)

  • Analyze the performance of multithreaded code

  • Manage up to hundreds(. ) of concurrent threads

  • Compare several multithreading frameworks for Android, including AsyncTask, RxJava and Kotlin Coroutines

  • More...

You'll practice everything you'll learn here by solving a series of carefully designed, hands-on exercises. So, after completing this course, you'll have extensive hands-on experience with multithreaded code.

We'll review several popular concurrency frameworks and see how they accommodate the same complex multithreaded feature. This will allow you to grasp the full landscape of multithreading in Android ecosystem. This will allow you to choose the framework you like the best to use in your Android projects.

So, if you want to become an expert in Android multithreading, this course is perfect for you.

Enroll now

What's inside

Learning objectives

  • Write multithreaded code of any complexity in your android apps
  • Learn the difference between the ui and background threads
  • Understand advanced concepts like synchronization, locks, volatility and happens-before
  • Analyze and reason about the thread-safety of your code
  • Manage hundreds of inter-dependent threads
  • Prevent memory leaks
  • Compare popular concurrency frameworks for android: asynctask, rxjava, coroutines

Syllabus

Introduction
Java and Kotlin
Tutorial Application Overview and Important Info
Concurrency and Multithreading Fundamentals
Read more
Motivation for Hardware Intuition
CPU Operation Basics
Single-Tasking System
Cooperative Multitasking System
Preemptive Multitasking System
Multiprocessing System
Android Processes and Threads
Thread Class, Garbage Collector, Memory Leaks
java.lang.Thread Class
Exercise 1
Garbage Collector in Android
Memory Leaks in Android
Threads Termination
Exercise 2
Thread Class, Garbage Collector, Memory Leaks Summary
UI Thread in Android Applications
UI Thread vs Background Thread in Android
Demonstration of UI Thread
User Interface Responsiveness
Protection of User Interface from Background Threads
Execution of Code on UI Thread
Handler and Looper Intuition
Exercise 3
UI Thread in Android Applications Summary
Multithreading Challenges
Introduction To Multithreading Challenges
Visibility
Atomicity
Volatile Variables
Concurrency Bug Fix, or When Volatility Isn't Sufficient
Atomic Classes
Threads Synchronization
Immutability
Happens Before
Happens Before Demonstration
Exercise 4
Exercise 4 Solution
Amendment to Exercise 4 Solution
Multithreading Challenges Summary
Paused (Blocked) Threads
Pausing Threads
Thread Sleep
Thread Wait
Thread Join
Amendment To Thread Join
Exercise 5
Solution Exercise 5
Paused (Blocked) Threads Summary
Clean Design of Multithreaded Code
Importance of Clean Design
Refactoring to Use Case and Observer
Java 8 Lambdas
Exercise 6
Clean Design of Multithreaded Code Summary
Thread Pool
Simple Cached Thread Pool
Thread Pool Issues
Custom Configuration Of ThreadPoolExecutor
Interplay Between Core Threads and Keep Alive Time
Misconfiguration of ThreadPoolExecutor in AsyncTask
Providing Multithreading Classes Using Dependency Injection
Exercise 7
Thread Pool Summary
AsyncTask
Why You Need to Know AsyncTask
AsyncTask Demonstration and Highlight of Issues
AsyncTask Summary
ThreadPoster
ThreadPoster Demonstration
Exercise 8
ThreadPoster Summary
RxJava
RxJava Introduction
RxJava Observable
RxJava Disposable
RxJava Advanced Multithreading
Exercise 9
RxJava Summary
Coroutines
Kotlin and Corooutines
Coroutines Demonstration
Nested Coroutines
Coroutines Dispatchers
Coroutines Cancellation
Non Cancellable Coroutines
Exercise 10
Coroutines Summary
Course Summary and Next Steps
Summary
Bonus Lecture

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Explores advanced techniques and concepts such as Synchronization, Locks, Volatility, and Happens-Before, which are essential for writing high-quality multithreaded code
Taught by Vasiliy Zukanov, a recognized expert in Android multithreading, who has extensive experience in developing and teaching courses on this topic
Covers a comprehensive range of topics, including thread creation, synchronization, communication, and performance optimization, which are essential for writing efficient and reliable multithreaded code
Includes hands-on exercises and projects throughout the course to help learners apply what they learn and gain practical experience
Provides a deep dive into the fundamentals of multithreading, which is essential for understanding and writing correct and performant multithreaded code
Examines popular concurrency frameworks for Android, including AsyncTask, RxJava, and Kotlin Coroutines, which allows learners to choose the most suitable framework for their projects

Save this course

Save Android Multithreading Masterclass to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Android Multithreading Masterclass with these activities:
Organize Course Materials
Stay organized and better retain information by compiling and reviewing course materials regularly.
Show steps
  • Create a dedicated folder or notebook for course materials.
  • Organize notes, assignments, and slides into logical sections.
  • Review materials periodically to reinforce your understanding.
Follow Android Multithreading Tutorials
Seek out and follow additional tutorials to reinforce your understanding of Android multithreading.
Browse courses on Multithreading
Show steps
  • Search for tutorials on specific multithreading topics covered in the course.
  • Follow the tutorials step-by-step and implement the concepts in your own projects.
Read "Java Concurrency in Practice"
Gain in-depth knowledge of Java multithreading best practices and patterns by reading this comprehensive reference book.
Show steps
  • Read and understand the core concepts of multithreading in Java.
  • Explore different concurrency patterns and techniques, including synchronization, locks, and thread pools.
  • Learn how to avoid common pitfalls and design robust multithreaded applications.
  • Apply the knowledge gained from the book to your own multithreading projects.
Eight other activities
Expand to see all activities and additional details
Show all 11 activities
Solve Multithreading Exercises
Practice solving exercises to improve your understanding of multithreading challenges and their solutions.
Browse courses on Concurrency
Show steps
  • Attempt to solve the exercises provided in the course materials.
  • Identify common pitfalls and errors in multithreaded code.
  • Develop strategies for preventing and handling concurrency issues.
Multithreading Coding Drills
Reinforce your understanding of multithreading by solving coding drills and exercises.
Show steps
  • Attempt coding challenges that involve creating and managing multiple threads.
  • Practice implementing synchronization mechanisms to resolve concurrency issues.
  • Solve exercises that test your ability to handle race conditions and deadlocks.
Multithreading Study Group
Enhance your understanding of multithreading concepts by participating in regular study group sessions with peers.
Show steps
  • Join a study group focused on multithreading.
  • Collaborate with group members to discuss complex topics, solve problems, and share knowledge.
  • Engage in peer-to-peer learning and provide support to fellow group members.
Participate in Multithreading Study Groups
Engage with other students to discuss multithreading concepts, share knowledge, and work on projects together.
Browse courses on Multithreading
Show steps
  • Join or form study groups with fellow course participants.
  • Collaborate on multithreading projects and assignments.
  • Share knowledge and insights on multithreading techniques.
Contribute to Open Source Multithreading Projects
Gain practical experience and contribute to the multithreading community by participating in open source projects.
Show steps
  • Identify open source multithreading projects that align with your interests.
  • Explore the codebase, understand the project's goals, and identify areas where you can contribute.
  • Fork the repository, make your changes, and submit a pull request.
  • Collaborate with project maintainers to refine your contributions and improve the project.
Create a Multithreaded Android Application
Build a practical Android application that utilizes multithreading to enhance its performance and user experience.
Browse courses on Android Development
Show steps
  • Identify a suitable project idea that can benefit from multithreading.
  • Design the application architecture to support multithreaded operations.
  • Implement multithreaded tasks to handle specific functionalities within the application.
  • Test and debug the application to ensure correct and efficient multithreaded behavior.
Advanced Multithreading Tutorials
Expand your knowledge of advanced multithreading techniques by following guided tutorials.
Show steps
  • Explore tutorials on topics such as thread-safe data structures, non-blocking algorithms, and parallel programming.
  • Implement advanced multithreading patterns and techniques in your own projects.
  • Discuss and compare different multithreading frameworks and libraries.
Android Multithreading Project
Develop a real-world Android application that utilizes multithreading to enhance performance and responsiveness.
Show steps
  • Design and implement a multithreaded architecture for the application.
  • Use appropriate concurrency patterns and techniques to ensure thread safety and avoid race conditions.
  • Optimize the application for performance and scalability.
  • Test and debug the application thoroughly to ensure its stability and correctness.

Career center

Learners who complete Android Multithreading Masterclass will develop knowledge and skills that may be useful to these careers:
Android Developer
Android Developers build applications specifically for Android operating systems. Proficiency in threading is a must-have skill for Android Developers, since one often needs to manage the execution of several functions at once to avoid freezing or data loss. This course provides a strong foundation for the use of concurrency and multithreading on the Android platform, which will be essential to a successful Android Developer.
Mobile Application Developer
Mobile Application Developers specialize in writing and maintaining software for mobile devices. This course will be particularly useful for Mobile Application Developers who work on Android applications, as a large part of the instruction pertains to the intricacies of writing multithreaded Android applications.
Software Engineer
Software Engineers work with computer software, designing and developing new applications or modifying existing ones. This course can help Software Engineers become more productive by exposing them to techniques for writing code that runs in multiple threads, in more detail than is typically covered in a computer science curriculum.
Computer Programmer
Computer Programmers write and maintain the code that allows computer applications to run. This course will help Computer Programmers to write multithreaded code with confidence and to solve concurrency issues that may come up in their work.
Web Developer
Web Developers design and create websites. While this course primarily focuses on multithreading in native Android applications, the principles covered may also be useful for Web Developers, as some web frameworks implement concurrency and multithreading in similar ways to those for Android. As a result, this course may be useful in helping Web Developers to build more efficient and responsive web applications.
Data Scientist
Data Scientists analyze data to extract insights and build models. This course may be useful for Data Scientists who work with large datasets, as it can help them to learn how to process data in parallel, which can significantly improve performance.
Machine Learning Engineer
Machine Learning Engineers build and maintain machine learning models. This course may be useful for Machine Learning Engineers who work with large datasets, as it can help them to learn how to train models in parallel, which can significantly improve performance.
Quantitative Analyst
Quantitative Analysts use mathematical and statistical models to analyze financial data. This course may be useful for Quantitative Analysts, as it will help them to understand how to write efficient and reliable multithreaded code, which is essential for processing large datasets and performing complex calculations.
Systems Engineer
Systems Engineers design and build computer systems. This course may be useful for Systems Engineers, as it will help them to understand how to write efficient and reliable multithreaded code, which is essential for designing and building high-performance systems.
Technical Writer
Technical Writers create documentation for software and hardware products. This course may be useful for Technical Writers who write documentation for Android applications, as it will help them to understand the complexities of multithreaded programming on the Android platform.
UX Designer
UX Designers create the user interface for software and hardware products. This course may be useful for UX Designers who work on Android applications, as it will help them to understand the importance of keeping the user interface responsive, even when the application is performing complex tasks in the background.
Product Manager
Product Managers manage the development and launch of software and hardware products. This course may be useful for Product Managers who work on Android applications, as it will help them to understand the technical challenges of multithreaded programming and to make informed decisions about the design and implementation of their products.
Business Analyst
Business Analysts analyze business processes and identify opportunities for improvement. This course may be useful for Business Analysts who work on software development projects, as it will help them to understand the technical challenges of multithreaded programming and to communicate effectively with technical teams.
IT Manager
IT Managers plan and direct the implementation of computer systems and networks. This course may be useful for IT Managers who oversee the development and deployment of Android applications, as it will help them to understand the technical challenges of multithreaded programming and to make informed decisions about the design and implementation of their systems.
Teacher
Teachers educate students in a variety of subjects. This course may be useful for Teachers who teach computer science, as it will help them to understand the complexities of multithreaded programming and to teach their students how to write efficient and reliable multithreaded code.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Android Multithreading Masterclass.
Provides a comprehensive overview of concurrent programming in Java. It covers topics such as thread safety, synchronization, and lock-free programming. This book valuable resource for anyone who wants to learn more about multithreading in Java.
Provides a comprehensive overview of multiprocessor programming. It covers topics such as synchronization, lock-free programming, and shared memory. This book valuable resource for anyone who wants to learn more about multiprocessor programming.
Provides a comprehensive overview of Kotlin coroutines. It covers topics such as coroutine builders, cancellation, and structured concurrency. This book valuable resource for anyone who wants to learn more about coroutines in Kotlin.
Provides a collection of best practices for writing effective Java code. It covers a wide range of topics, including concurrency, performance, and memory management. This book valuable resource for anyone who wants to write better Java code.
Provides a comprehensive overview of distributed systems. It covers topics such as distributed algorithms, fault tolerance, and security. This book valuable resource for anyone who wants to learn more about distributed systems.
Provides a comprehensive overview of data-intensive applications. It covers topics such as data modeling, storage, and processing. This book valuable resource for anyone who wants to learn more about data-intensive applications.
Provides a comprehensive overview of modern operating systems. It covers topics such as process management, memory management, and file systems. This book valuable resource for anyone who wants to learn more about operating systems.
Provides a comprehensive overview of computer architecture. It covers topics such as processor design, memory hierarchy, and I/O systems. This book valuable resource for anyone who wants to learn more about computer architecture.
Provides a comprehensive overview of operating systems. It covers topics such as process management, memory management, and file systems. This book valuable resource for anyone who wants to learn more about operating systems.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Android Multithreading Masterclass.
Create Your First Multithreaded Application in Java
Most relevant
Android Apps with Kotlin: Tools and Testing
Most relevant
Learn Multithreading in C++
Most relevant
Java Multithreading, Concurrency & Performance...
Most relevant
Developing Android Applications with Kotlin: Getting...
Most relevant
Building Multithreaded C# 8 Applications with the Task...
Most relevant
Kotlin for Android: Beginner to Advanced
Most relevant
Kotlin for Beginners: Learn Programming With Kotlin
Most relevant
Building Android Apps with Kotlin: Getting Started
Most relevant
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser