Рентабельность использования java.util.concurrent.* [закрыт]

117
26 октября 2019, 07:10

Приветсвую, за два года опыта разработки на Java научился много чему, но и конечно что-то никогда не использовал, кроме как на этапе обучения, таким является пакет java.util.concurrent.*, для меня это пока что темный лес, принципы работы понятны, но применения пока что не понимаю, никти, очереди, блокировки и тд.

И вот пришел момент разобраться, вопрос как таковым является не вопросом, а по большей части консультацией.

У меня есть проект, в нем я использую JBDC + Postgres. Доступ к БД стандартный. Получаю соединение-заполняю параметры-выполняю запрос-обрабатываю ResultSet-закрываю соединение. У меня всегда выполняется только одна операция, этого вполне достаточно. Но тут появилась необходимость выполнять сразу около 100 запросов однотипных. Я до этого делал стандартно, помещал все в List, далее открывал соединение, и по порядку выполнял запрос, далее в List уже записывал модели-ответы и закрывал соединение.

И тут у меня возник вопрос, а стоит ли в данном моменте например использовать многопоточность, например очереди, или разделить к примеру процесс на 10 ниток по 10 операций, будет ли это быстрее работать, и вообще будет ли это рентабельно? Стоит ли приложить усилия в изучение и применение? В изучение понятно, что пригодится, так как много вакансий где требуется знание многопоточности.

Answer 1

Вам правильно указали на пул коннектов в комментариях, т.к. все операции с драйвером JDBC блокирующие, использование их в многопоточной среде корректно лишь с созданием некоторого количества коннектов и использованием их. Иначе, операция создания коннекта будет "сжирать" драгоценное время и никакого профита от многопоточности не будет. Еще нужно смотреть на операции в самой БД, которые также могут быть блокирующими (например вставка в таблицу, может блокировать таблицу для остальных). Таким образом можно наткнуться на lock в БД, и никак его не смочь обработать. В общем, многопоточность штука классная, но очень капризная и использовать ее нужно осторожно.

READ ALSO
Как искать данные во всех ключах Firebase dat?

Как искать данные во всех ключах Firebase dat?

В моем случае сейчас идет поиск по Ключу kzSongTitleЯ же хочу искать во всех ключах

152
Получение всех ResultSet из Statement из JDBC?

Получение всех ResultSet из Statement из JDBC?

Я выполняю следующие запросы:

117
java потеря необработанного исключения

java потеря необработанного исключения

Почему в данном примере было потеряно необработанное исключение:

116