Нужно ли учить многопоточность в Java?
С многопоточностью в Java ситуация примерно такая же как и с алгоритмами.
И то и другое спрашивают в топ компании. И то и другое сложно в освоении. И то и другое редко используется на практике.
Типичное приложение на Java - это какой-то бэкенд, который работает в обертке какого-то контейнера, типа Tomcat. На каждый новый реквест он создает новый поток, в рамках которого работает ваша бизнес логика. В таком случае вам не нужно заботиться о создании потоков вообще. За вас это сделает контейнер. Более того, часто в рамках приложения у вас нет shared состояния/переменных. Все обьекты создаются и живут в рамках одного потока(thread confinment). Обычно оно на уровне SQL базы, доступ к которой происходит с ACID транзакциями. Поэтому 90% кода на Java не требует особых знаний по многопоточности. При этом, при приеме в Яндекс, Сбер, Одноклассники, Mail и т.д. вас обязательно спросят многопоточность на собеседовании. Дело в том, что в таких компаниях это используется несколько чаще, т.к. пишутся кастомные и более сложные вещи + нет времени на освоение многопоточности, а ошибки могут стоить очень дорого. Поэтому если вы хотите попасть в топ компании(не обязательно FAANG), то учите и многопоточность и алгоритмы.
В FAANG многопоточность не спрашивают, но и вероятность пройти собес в FAANG меньше.
Post #345
2.28K
- 👍 27
- ❤ 3
- 🤔 1