| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > паралельно выполняемые SQL запросы |
| Автор: barin_Student 24.9.2009, 07:53 | ||
Вообщем у меня такая штука:
Есть один класс который реализует работу с таблицами, resultSet и statement один раз определяються, и дальше пошла работа вида: с потоков демонов обращаються к этому классу ассинхронно, то есть вариант что еще прошлый запрос не доконца отработал и тут другой класс стучиться для нового запроса, и я думаю из за этого у меня такая ошибка: Operation not allowed after ResultSet closed к итогу, от чаго генериться такая ошибка? и как организовать решение моей задачи? Сорри за коряво заданный вопрос |
| Автор: garbuz 24.9.2009, 09:25 |
| Я далеко не спец в потоках, но разве join не для этого? |
| Автор: olexande 24.9.2009, 09:32 |
| Может попробовать организовать в режиме "потоков и блокировок" - При вызове "ф-ции" устанавливается блокировка, при окончании - снимается ... В теле "ф-ции" организовать проверку есть-ли (установлена-ли) блокировка. Если блокировка не установлена, то можно "заходить" в "ф-цию". Это если делать вручную. |
| Автор: barin_Student 24.9.2009, 11:39 | ||
Светофоры не подойдут))) |
| Автор: Shurr 25.9.2009, 17:31 |
| Собственно проблема в параллельном доступе к ресурсам, которые такого режима работы не подразумевают. Вариант номер один - просто-напросто синхронизировать все методы класса, работающего с БД, чтобы вся работа с ним шла последовательно. Если это приводит к неприемлемому падению производительности - тогда надо делать пул из таких классов, и выдать каждому его инстансу по коннекшену; или создавать инстанс класса для работы с БД каждый раз, но использовать пул коннекшнов. |
| Автор: duk 25.9.2009, 20:31 |
| Самый разумный вариант, как по мне синхронизировать методы. Можно, правда, SQL команды записывать в список (addBatch(String sql)) и в определенное время выполнять. |
| Автор: barin_Student 1.10.2009, 08:16 |
| а если я для каждого класса определю свой statement ? можно ли будет паралельно работать с данными? |