Wątek (ang. thread) – to część programu wykonywana jednocześnie z innymi operacjami, procesami, np: zapis danych na nośnik CD i jednocześnie wydruk treści z dokumentu Word. Aby program nie zawiesił swojej pracy wykorzystuje się wielowątkowość, przełączanie się w krótkich odcinkach czasu między procesami, tak że mamy wrażenie jakby programy działały „równolegle”, bez opóźnień.

Schemat tworzenia i uruchamiania wątku w Javie:

Interfejs Runnable wchodzi w skład pakietu java.lang, dlatego nie musi być importowany do programu. Decyzję o kolejności wykonywania wątków, czasie ich trwania oraz stanie (uruchamialny / uruchomiony / zablokowany) podejmuje mechanizm zarządzający i praktycznie nie jesteśmy w stanie tego kontrolować. Jedynym sposobem jest usypianie wątków – sleep. Ale o tym za chwilę.

Przykład:

Kod klasy testującej:

Powyższy przykład wyświetli:

lub:

Jak widać mechanizm zarządzający wątkami jest nieprzewidywalny. Aby otrzymać zawsze ten sam wynik możemy uśpić wątek za pomocą metody sleep:

Możemy uruchomić również kilka wątków, np: