Ответ
Поток (thread) — это наименьшая единица выполнения внутри процесса. Процесс может содержать несколько потоков, которые выполняются параллельно (или псевдопараллельно) и разделяют общие ресурсы процесса, такие как память и открытые файлы.
Ключевые характеристики потоков:
- Разделяемая память: Потоки одного процесса работают в одном адресном пространстве.
- Независимый поток выполнения: Каждый поток имеет собственный стек вызовов и программный счетчик.
- Легковесность: Создание и переключение между потоками требует меньше ресурсов, чем между процессами.
Пример создания потока в Java:
// Способ 1: Наследование от класса Thread
class MyThread extends Thread {
@Override
public void run() {
System.out.println("Поток выполняется: " + Thread.currentThread().getName());
}
}
// Способ 2: Реализация интерфейса Runnable (предпочтительнее)
class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Задача выполняется в потоке");
}
}
// Запуск
Thread t1 = new MyThread();
t1.start(); // Запускает новый поток
Thread t2 = new Thread(new MyRunnable());
t2.start();
// Через лямбда-выражение (Java 8+)
Thread t3 = new Thread(() -> System.out.println("Лямбда-поток"));
t3.start();
Важно: Параллельный доступ потоков к общим данным требует синхронизации (например, с помощью synchronized, Lock или атомарных классов) для предотвращения состояний гонки (race condition) и обеспечения согласованности данных.