Ответ
В Java потоки можно запускать двумя основными способами:
- Наследование от
Thread:
class MyThread extends Thread {
@Override
public void run() {
// код потока
}
}
// Запуск:
new MyThread().start();
- Реализация
Runnable:
Runnable task = () -> {
// код потока
};
// Запуск:
new Thread(task).start();
Современный подход - использование ExecutorService вместо прямого создания потоков. Также важно помнить про синхронизацию при работе с общими ресурсами и избегать утечек памяти через ThreadLocal. В Android предпочтительнее использовать Handler, AsyncTask (deprecated) или корутины Kotlin.