Multithreading & Concurrency
Two main ways: extend the Thread class and override run(), or implement the Runnable interface and pass an instance to a Thread's constructor. Implementing Runnable is generally preferred since Java doesn't support multiple class inheritance, and it decouples the task from the threading mechanism.
Beginner3 min

