Приветсвую, за два года опыта разработки на Java научился много чему, но и конечно что-то никогда не использовал, кроме как на этапе обучения, таким является пакет java.util.concurrent.*, для меня это пока что темный лес, принципы работы понятны, но применения пока что не понимаю, никти, очереди, блокировки и тд.
И вот пришел момент разобраться, вопрос как таковым является не вопросом, а по большей части консультацией.
У меня есть проект, в нем я использую JBDC + Postgres. Доступ к БД стандартный. Получаю соединение-заполняю параметры-выполняю запрос-обрабатываю ResultSet-закрываю соединение. У меня всегда выполняется только одна операция, этого вполне достаточно. Но тут появилась необходимость выполнять сразу около 100 запросов однотипных. Я до этого делал стандартно, помещал все в List, далее открывал соединение, и по порядку выполнял запрос, далее в List уже записывал модели-ответы и закрывал соединение.
И тут у меня возник вопрос, а стоит ли в данном моменте например использовать многопоточность, например очереди, или разделить к примеру процесс на 10 ниток по 10 операций, будет ли это быстрее работать, и вообще будет ли это рентабельно? Стоит ли приложить усилия в изучение и применение? В изучение понятно, что пригодится, так как много вакансий где требуется знание многопоточности.
Вам правильно указали на пул коннектов в комментариях, т.к. все операции с драйвером JDBC блокирующие, использование их в многопоточной среде корректно лишь с созданием некоторого количества коннектов и использованием их. Иначе, операция создания коннекта будет "сжирать" драгоценное время и никакого профита от многопоточности не будет. Еще нужно смотреть на операции в самой БД, которые также могут быть блокирующими (например вставка в таблицу, может блокировать таблицу для остальных). Таким образом можно наткнуться на lock в БД, и никак его не смочь обработать. В общем, многопоточность штука классная, но очень капризная и использовать ее нужно осторожно.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В моем случае сейчас идет поиск по Ключу kzSongTitleЯ же хочу искать во всех ключах
Почему в данном примере было потеряно необработанное исключение: