Easyprocess-vs-thread
Чем процесс отличается от потока в Java?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Process — независимая программа со своим address space, memory, file descriptors. Поток (thread) — единица выполнения внутри процесса, разделяет memory с другими потоками.
// Поток — внутри процесса JVM, все делят heap
new Thread(() -> sharedList.add(1)).start();
// Процесс — другой процесс ОС через ProcessBuilder
Process p = new ProcessBuilder("ls").start();
String out = new String(p.getInputStream().readAllBytes());
p.waitFor();- Межпоточное взаимодействие — через shared memory (поля, очереди);
- IPC (межпроцессное) — через pipes, sockets, files, shared memory;
- Thread дешевле process (context switch быстрее), но не бесплатно (~1MB stack на thread);
- Process isolation — crash одного не влияет на другой (security/safety);
- Virtual threads (Java 21) — лёгкие, миллионы, под капотом малое число OS threads.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.