Partindo dos fundamentos apresentados na unidade anterior para criação de um código Java robusto, apresentaremos, a partir de agora, os principais conceitos de alto nível envolvidos na programação paralela ou concorrente para qualquer sistema operacional multitarefa, inclusive o Android, que é um sistema operacional baseado no kernel Linux.
Todos os computadores, smartphones, tablets, dentre outros aparelhos modernos, são capazes de fazer várias coisas ao mesmo tempo. As pessoas acostumadas a trabalhar com esses dispositivos podem não estar completamente cientes deste fato, contudo é importante compreendê-lo.
Em qualquer sistema multiprogamado, a CPU cria chaves de programa para programa, executando cada um deles por dezenas ou centenas de milissegundos. Estritamente falando, enquanto a cada instante do tempo a CPU executa somente um programa, no decorrer de um único segundo do tempo ela pode trabalhar por vários programas, dando aos usuários a ilusão de um paralelismo. Um dos principais objetivos da multiprogramação é melhorar o turnaround do software, ou seja, o tempo transcorrido desde o momento em que o software entra em execução e o instante em que termina sua execução.
Neste modelo, todos os programas/softwares que podem ser executados no computador são organizados em vários processos. Um conceito fundamental para todos os sistemas operacionais, inclusive o Android, é o de processo.