Многопоточность

Многопоточность #


1. Переменную count хочешь быстро заинкрементировать до 10 тыс. В цикле запустил 10 тыс. потоков, которые инкрементят счетчик. Решил сделать синхронизацию. Какой способ выбрать: synchronized или atomic? Почему? #

2. Как сделать так, если 10 потоков вызывают get() одновременно, ты не создал 10 объектов Singletone? #

3. Может ли быть, что разные потоки всегда видят актуальное значение переменной, хотя она НЕ помечена volatile? #

4. Есть статичный метод, в его сигнатуре пишу synchronized. На чем будет происходить синхронизация? #

5. Есть объект, внутри синхронизированный метод, к которому могут обратиться несколько потоков. Предположите, когда синхронизированный метод не сработает и получим коллизию? #

6. Пишем генерацию отчета. Мне надо сходить в 4 системы по HTTP и получить данные. Хотим ускорить с помощью многопоточки. Как сделать? #

7. Есть 5 разных потоков. Есть метод объекта, который потоки хотят плюс-минус одновременно дернуть, но нужно, чтобы дернул только один. Что делать в первую очередь #

8. На atomic переменной сделали счетчик. Изначально значение переменной 0. Два потока прибавляют 1 одновременно. #

9. Есть несколько потоков, мы хотим, чтобы они все стартанули одновременно. Как это сделать средствами Java? #

10. В коде нужно сделать паузу. Нельзя использовать классические способы Thread sleep, wait. Как нам реализовать паузу? #

11. Нужно сделать систему мониторов, мьютексов, чтобы таски выполнять согласованно. Какой concurrency интерфейс использовать? Методы, классы, интерфейсы, которые предоставляют механизмы блокировок? #

12. Есть счетчик. Запустили 100 потоков. По итогу у нас будет значение 100? #

13. В одном потоке перебирается коллекция, а в другом потоке из коллекции что-то удаляется. Что делать, чтобы не было ошибки? #

14. У хэшмап планируем использовать в качестве некого счетчика для действий пользователя. В качестве ключа у нас пользователь, в качестве значения счетчик. Происходит какое-то событие, мы берем пользователя, добавляем в счетчик плюс один. Таким образом у нас растет событие. Вопрос. Будет ли корректно такая мапа работать в многопоточке? #

15. Если создать 100 потоков, программа будет выполняться быстрее? Поток идет в центробанк запрашивает валюту и заносит в таблицу. Миллион значений. Если создать 5 потоков и 100 потоков. Что быстрее выполнится? #

16. Создание потока дорогая операция. Как нам помогает ExecutorService? #

17. У многопоточки есть 3 параметра. atomicity, visibility, happens-before. Что из этого нам обеспечивает переменная volatile #

18. Предположим поток ничего не выделяет из памяти. Вообще не обращается к Хипу. Этот поток может жить без Стека? #

19. Поток который обрабатывает очень большой объекм данных. Поток обращается к данным. Все данные будут закешированы к кеше этого потока? #

20. Когда присваиваете значение в переменную это атомарное действие? #

21. Если два потока хотят синхронизироваться, какой объект они могут использовать в качестве монитора? #

22. Если 10 потоков, которые пришли в synchronize, кто из них первый попадет в Lock #

23. Есть потоки. Вы стартуете на каждую задачу либо сделали threadPool или Executor. У вас ограниченное количество потоков. С точки зрения вычислений это более эффективно или просто удобно? #

24. Как написать асинхронное приложение. Как одновременно запустить две функции и дождаться их выполнения. Например, есть getTotalPrice и getBonusRubbles. Надо вычесть их в конце. Как это сделать? #

25. В чем отличие несинхронной обработки запроса и неблокирующей реактивной обработки? #

26. Почему в многопоточной среде выполнения из коллекции ArrayList может выброситься ConcurrentModificationException. Как это пофиксить? #

27. Если создали в main новый поток и запустили, какой приоритет будет у потока? #

28. Пишу код, хочу использовать чужой класс. Мой участок кода будет исполняться многопоточно. Как понять, что чужой класс будет нормально работать в многопоточной среде? Чужой класс - это Registry, там обычная HashMap, в которую что-то складываем, потом что-то достаем #

29. Хотим вызвать три метода в параллель, объединить результаты которые они выдадут и вызвать из своего метода? Каждый из методов возвращает Set. #

30. Создаем на Spring Initializer простое Spring Boot приложение, добавив в него всего один компонент Web. И создадим один контроллер, в рамках которого создадим один метод. Это приложение будет однопоточным или многопоточным? #

31. Как считаете, это безопасно с точки зрения потоков, что дефолтный скоуп Singleton, а кругом многопоточка? #

32. Как блокировать поток в многопоточной среде #

33. Хотим вызывать три метода в параллель, объединить результаты и вернуть из своего метода. Как такое реализовать? #

34. Есть класс Thread, в нем есть статический метод sleep(). В Sleep можем передать временное значение. У каждого объекта в Java есть метод wait(). Чем отличаются эти два метода? #

35. Когда выполняли notifyAll и все потоки пробудились, какой поток будет выполняться? #

36. Как проверить, что именно 20 потоков прошло через блок кода? #