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, а кругом многопоточка?
#
33. Хотим вызывать три метода в параллель, объединить результаты и вернуть из своего метода. Как такое реализовать?
#
34. Есть класс Thread, в нем есть статический метод sleep(). В Sleep можем передать временное значение. У каждого объекта в Java есть метод wait(). Чем отличаются эти два метода?
#
35. Когда выполняли notifyAll и все потоки пробудились, какой поток будет выполняться?
#
36. Как проверить, что именно 20 потоков прошло через блок кода?
#
37. Есть класс Desk. Есть якобы AI и пользователь работают параллельно, а IndianAI игрок сидит из Индии и по TCP/IP общается с программой. Как бы реализовал многопоточку в этом случае?
#
38. Есть метод помеченный synchronized. И есть другой метод в том же классе, в котором критическая секция помечена через Lock объект. Что является монитором в данном случае? Относительно чего синхронизируются?
#
39. Если я напишу volatile в многопоточном инкременте обычного int, будет ли корректно считаться инкремент?
#
40. Если указали synchronized в сигнатуре метода, то кто будет там монитором?
#
41. Запустил CompletableFuture на 10 задач. И запустил Executor на 10 потоков. В чем разница?
#
42. Есть сервис. На вход ему посылаем потоки. Один сделан на синхронном потоке, другой на асинхронном. У каждого под капотом пул из 10 потоков. Ядер у процессора 10. Каждый запрос выполняется 3 мин. Кинул первый, второй, …, десятый запрос, потом одиннадцатый запрос кидаю, а под капотом всего 10 потоков. Что произойдет с одиннадцатым запросом, если первые десять запросов еще не исполнились?
#
43. Есть глобально доступный счетчик public static int count = 0. Есть два потока. Каждый поток в цикле из 100 итераций делает инкремент на 1 счетчика count. Потоки запускаются одновременно. Мы дожидаемся их выполнения. Что мы увидим в счетчике count после их отработки?
#
44. Есть 1000 клиентов. Нужно каждый час проходить и выполнять какую-то работу. Есть вариант распараллелить?
#
45. У Вас есть два потока, которые считывают данные из заказа. Один поток не справлялся и Вы решили подключить второй. Может получиться, что Вы заказ считали, а он в БД не вставляется. Например, товар еще не подгрузился. Надо к этому заказу потом вернуться, а у Вас два потока работают, нужно как-то переставлять смещение, что считали, а что нет. Как бы Вы это решили?
#
46. Есть базовый трехзвенный сервис: получить пользователей, в БД все идет. Через RestController идет. Жирный pod на 20 потоков вызывает одни и те же методы, использует одни и те же классы. И в многопоточной среде все отлично работает. Мы не ставим блокировки, не используем многопоточные коллекции. Почему?
#
47. Как думаешь, будут ли проблемы с многопоточностью, если мы поменяем скоуп бина? Если поставим Prototype или Web Request?
#
48. Часто бывает, что из БД вычитал набор тасков, они обрабатываются долго, надо это сделать параллельно. Как обычно такое решаешь?
#
49. Ты пишешь приложение, в котором используется CompletableFuture, которую ты запускаешь и пытаешься прочитать что-то из SecurityContext и как-то обработать. Что будет происходить?
#
50. Многопоточка, CompletableFuture. Есть наш метод, он выполняет какую-то логику. Мы можем вносить изменения в его реализацию. Главный нюанс: если в метод закинуть много данных, то для обработки он будет потреблять много ресурсов и очень долго выполняться. Мы хотим начать вызывать его в отдельном потоке. Но с нюансом: если за 5 сек ответ, мы больше не хотим ждать его выполнения и больше не хотим потреблять ресурсы на его выполнение. Что нужно сделать?
#
51. Есть 3 потока, каждый что-то делает и мы сделали счетчик количества операций. В каждом потоке мы хотим этот счетчик инкрементировать. Как это сделать потокобезопасно?
#
52. Если через семафор: пришел поток, захватил семафор, остальные потоки сидят-курят, в ожидании, когда освободится. То есть в момент инкрементации все потоки стоят, ничего не делают, пока один не сделает. Как бы ты реализовал в таком случае?
#