Ответ
Процесс и поток — это единицы выполнения, но с разной степенью изоляции и разделения ресурсов.
| Критерий | Процесс (Process) | Поток (Thread) |
|---|---|---|
| Изоляция | Полная. Имеет собное адресное пространство в памяти. | Ограниченная. Потоки разделяют память процесса (кучу), в котором созданы. |
| Ресурсы | Собственные системные ресурсы (память, файловые дескрипторы). | Разделяют ресурсы родительского процесса. |
| Создание | Тяжеловесная операция, требует выделения ресурсов ОС. | Легковесная операция, создается внутри процесса. |
| Коммуникация | Сложная: IPC (межпроцессное взаимодействие) через сокеты, pipes, разделяемую память. | Простая: через общие объекты в куче (требует синхронизации!). |
| Сбой | Сбой одного процесса не влияет на другие. | Сбой (например, необработанное исключение) в потоке может завершить весь процесс. |
| В Java | Класс java.lang.Process (запуск через Runtime.exec() или ProcessBuilder). |
Класс java.lang.Thread или пулы потоков из java.util.concurrent. |
Пример создания потока:
// Создание и запуск потока
Thread thread = new Thread(() -> {
System.out.println("Выполняюсь в потоке: " + Thread.currentThread().getName());
});
thread.start();
Пример запуска процесса:
// Запуск внешней программы как отдельного процесса
Process process = new ProcessBuilder("notepad.exe").start();
Вывод: Потоки используются для параллельных задач внутри одного приложения, процессы — для полной изоляции и запуска независимых программ.