Klasa Thread w Java reprezentuje wątek wykonania programu i jest podstawą wielu implementacji mechanizmów wielowątkowości. Pozwala na wykonanie pracy na innym wątku. W czystej implementacji bez wsparcia innych klas może służyć do wykonywania długich zadań bez komunikacji z wątkiem głównym. Wątek działa niezależnie od cyklu zycia aplikacji, dlatego potrafia przetrwać zmianę konfiguracji czy wyjście z aplikacji (trafia do póli wątków). Zatrzymanie działania następuje automatycznie po zakończeniu pracy lub w sposób manualny (metodą interrupt). Może być tylko raz wykonany zatem każde uruchomienie oczekiwanej pracy wymaga nowej instancji co sprawia, że nie nadaje sie do ponownego użytku. Komunikacja z wątkiem głównym może przebiegać przy użyciu klasy Handler.
Looper
Mówiąc o wątkach w Android nie sposób nie wspomnieć o klasie Looper, która używana jest do uruchamiania pętli wiadomości dla wątku. Wspiera wykonanie pracy wątku przez dostarczanie wybranych wiadomości i zadań z kolejki do odpowiednich obiektów klasy Handler. Każdy wątek Thread może mieć jedną uniknalną instancje Looper.
Handler
Handler umożliwia komunikacje między wątkami poprzez wykorzystanie kanału wiadomości. Jest pośrednio powiązany z wątkiem Thread poprzez bezpośrednie przekazanie obiektu Looper danego wątku w konstruktorze (domyślnie jest to Looper wątku w którym Handler jest tworzony). Działa więc na wątku, który jest właścicielem dostarczonej instancji Looper. Wiadomość Message może być wysyłana z dowolnego miejsca przez sendMessage oraz zostać odebrana przez handleMessage na wątku obiektu Handler. Natomiast zadanie Runnable wywoływane jest metodą post, a jego wykonanie odbywa się na wątku obiektu Handler.
HandlerThread
HandlerThread jest rozbudowaną klasą Thread, która posiada własną instancję Looper i Handler dzięki czemu potrafi kolejkować zadania i może być użyty wielokrotnie. Zadania wykonywane są synchronicznie w sposób sekwencyjny. Obiekt HandlerThread podobnie jak Thread jest aktywny dopóki nie zostanie zniszczony automatycznie przez system lub ręcznie.
Pula wątków
Pula wątków (ThreadPoolExecutor) jest pojedynczą kolejką typu FIFO składającą się z grupy wątków roboczych, które w momencie osiągnięcia stanu dostępności pobierają zadanie z kolejki. Umożliwia asynchroniczne wykonanie zadań przy zachowaniu optymalnej strategii przetwarzania wielowątkowoego, dostarcza mechanizm zarządzania wątkami (dodawanie, anulowanie, priorytety) oraz prostą statystykę. Pula wątków może być użyta przez jedną z implementacji interfejsu Executor, Callable czy Future. Przeważnie instancje uzyskuje się przy pomocy metody wytwórczej z klasy Executors oferującej kilka rodzajów typu puli watków.