The objective of the course is to be able to write multithreaded programs and select the right tools and APIs for the right purpose to implement the different concurrency scenarios. 

Intended audience
The intended audience for this training course is Android programmers and architects who already understand the basics of Android software development but need more information on how to efficiently implement multithreaded components for Android.

Skills acquired

  • Understand the role of the following mechanisms from the perspective of concurrent programming in order to start implementing one’s own multithreaded designs

    • Thread
    • Runnable
    • Synchronized block
    • Wait and notify
    • CopyOnWriteArrayList
    • Future – Callable
    • ReentrantLock
    • ReadWriteReentrantLock
    • Producer/consumer issues
    • Immutability
    • Double-checked locking for lazy initialization

  • Understand the Android execution context, APIs and tools for concurrency

    • Linux process and threading model introduced (scheduling algorithm, priorities)
    • Application threading model – DVM threads – IPC threads- other threads
    • Android Dalvik Virtual Machine Threading Model introduced
    • Debugging considerations and tools for debugging multi-threaded applications
    • Threading models for Android Services, Broadcast Receivers and Content Providers
    • Using Linux utilities and Eclipse DDMS to analyze the threading model at runtime
    • Debugging a multithreaded application on Android
    • Issues in debugging multithreaded applications


  • Android Multithreading – design decisions and practices

    • When to create extra threads and when not?
    • When to use and when not to use thread pools?
    • Using singletons in multithreaded context
    • Using StrictMode
    • Using Handler class with message queues
    • Using Loopers
    • Using Loaders and AsynchTask

Course duration
2 days.

Course format
The course has 40% theory and 60% exercises. Note! This course can be run in combination with Android Concurrency Workshop.


  • Android programming model, Android documentation usage – can search for information on different sources and evaluate the trustworthiness of the sources!
  • Knows Android native tools and basic Linux concepts and can use them effectively for debugging
  • Knows Java programming language well - able to write Java programs for Android and use the SDK
  • Exception handling