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